繁体   English   中英

iPhone内存泄漏帮助

[英]iPhone memory leak help

我是iPhone开发的新手,我刚刚通过Intruments Leaks工具第一次运行了我的iPhone应用程序,并使用ListViewController dataArray方法发现了一个泄漏。

当我单击列表时,它会显示代码,并且几行旁边都有百分比。 据推测,它们是导致内存泄漏的线路。 我粘贴了下面的代码和百分比:

- (NSArray*) dataArray {
   MapViewController *map = mainWindow.mainView.mapView;
NSMutableArray *data = [NSMutableArray arrayWithCapacity: 0]; /** REPORTS 25.3% HERE **/

if (selectedIndex == 1 || selectedIndex == 0)
 [data addObjectsFromArray: DataSource.data]; /** REPORTS 7.4% HERE **/

if (selectedIndex == 2 || selectedIndex == 0)
 [data addObjectsFromArray: DataSource.additionalData]; /** REPORTS 67.4% HERE **/

   [data sortUsingSelector:@selector(compareAnnotation:)];

   dataArrayNeedsUpdating = NO;
[data retain];
dataArray = data;

   return data;
}

我可以在该代码中进行任何更改以防止泄漏,还是需要在调用代码中进行更改?

提前致谢,

如果在调用此方法时dataArray正在存储一个值,则它将泄漏,因为在覆盖之前您没有释放旧值。 简单的解决方案是使用设置器(可能是@synthesize生成的设置器)并更改行

[data retain];
dataArray = data;

比较简单(和更常规)

[self setDataArray:data];

或者,如果您愿意,

self.dataArray = data;

和...之间的不同

myMemberVariable = somePointerToAnObject;

self.myMemberVariable = somePointerToAnObject;

是新的Objective-C编码器的微妙陷阱之一。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM