gpt4 book ai didi

iPhone 内存泄漏帮助

转载 作者:行者123 更新时间:2023-12-03 16:53:17 27 4
gpt4 key购买 nike

我是 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 正在存储值,则该值将会泄漏,因为在覆盖旧值之前您没有释放旧值。简单的解决方案是使用 setter(可能是由 @synthesize 生成的)并更改行

[data retain];
dataArray = data;

更简单(也更传统)

[self setDataArray:data];

或者,如果您愿意,

self.dataArray = data;
<小时/>

两者的区别

myMemberVariable = somePointerToAnObject;

self.myMemberVariable = somePointerToAnObject;

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

关于iPhone 内存泄漏帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3462767/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com