【发布时间】:2012-10-08 23:19:41
【问题描述】:
我一直在使用工具来查找未正确释放的分配。我有 MKMapViewDelegate 在实例化后通过实例方法添加地图。我可以在调用树中看到,在释放 ViewDelegate 后,此方法会保留大约 300KB 的内存。我注释掉了代码的内容,它仍然只用这一行来维护内存:
self.map = [[MKMapView alloc] initWithFrame:CGRectMake(10, 210, 300, 125)];
我查看对象列表,发现 MKMapView 本身并不存在,但随着我不断创建新的 ViewDelegates,内存不断增加。以下是地图的定义方式:
@property (strong, nonatomic) MKMapView *map;
地图的delegate设置为nil,ViewDelegate的dealloc上的引用也是如此
self.map.delegate = nil;
self.map = nil;
【问题讨论】:
-
用 release 代替 nil 怎么样。你能检查一下吗?
-
@S.P.他们正在使用 ARC,没有发布。
-
@S.P.没有其他人提及该财产,对吗?没有其他可能持有参考?
-
我看错了这个 ViewDelegate 的 dealloc 已经放在那里了
-
克里斯,没有对地图进行任何其他操作,也没有引用该属性。据我所知,地图对象也被正确释放,因为我可以看到它在仪器的对象视图中被创建并消亡。
标签: iphone ios memory-leaks mkmapview automatic-ref-counting