objective-c – 如何修复内存泄漏?
在进行长轮廓测试后,我发现在我的一个“.m”文件中,内存泄漏发生在viewdidload部分.我查了一下,xcode突出显示了我用值初始化选择器数组的部分.我的程序使用拣货员进行用户输入.我的程序中有3 5个不同的视图.第一个是免责声明,第二个是用户可以选择他/她想要做的计算类型的菜单.每次计算都需要用户从选择器输入的某些输入.例如.其中一个视图有5个输入,由5个不同的uipickers处理,带有用于保存值的单独数组.这些数组使用该视图的viewdidload方法中的值进行初始化.这是我在运行测试后发现的:
? 这是我第一次开发应用程序时,我对于该怎么做感到困惑.任何帮助,将不胜感激. 解决方法
目标c中的对象具有保留计数.如果当对象超出范围时(当您停止使用它时)此保留计数大于0,则它会泄漏.
以下事项会增加保留计数 > [[alloc] init] 以下减少了保留计数 > [发布] 您应该检查代码并确保数组的每个保留或添加都与相应的版本匹配. (您可以在dealloc方法中释放成员变量). 编辑:杰里米提出了一个有效的观点,我的答案没有
还有自动释放对象,看看这个例子; -(init){ ... stagePickerArray = [[NSMutableArray alloc] init]; for (int i = 0; i < 3; i++) { //this string is autoreleased,you don't have call release on it. //methods with the format [CLASS CLASSwithsomething] tend to be autorelease NSString *s = [NSString stringWithFormat:@"%d",i); [stagePickerArray addObject:s]; } ... } 我认为你唯一缺少的就是在你的dealloc方法中调用release -(void) dealloc { [stagepickerarray release]; //Do this for each of your arrays [super dealloc]; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |