MKMapView initWithFrame不使用ARC释放内存

时间:2012-10-08 23:19:41

标签: iphone ios memory-leaks mkmapview automatic-ref-counting

我一直在使用工具来查找未正确发布的分配。我有MKMapViewDelegate,它在实例化后通过实例方法添加地图。我可以在调用树中看到,在释放ViewDelegate之后,此方法保留了大约300KB的内存。我评论了代码的内容,它仍然只用这一行维护内存:

self.map = [[MKMapView alloc] initWithFrame:CGRectMake(10, 210, 300, 125)];

我查看对象列表并且MKMapView本身不存在,但随着我不断创建新的ViewDelegates,该内存不断增加。以下是地图的定义方式:

@property (strong, nonatomic)        MKMapView *map;

地图的委托设置为nil,以及ViewDelegate的dealloc上的引用

self.map.delegate = nil;
self.map = nil;

1 个答案:

答案 0 :(得分:1)

将委托设置为nil后,就不再有任何指针,iOS会在需要时释放它。将其设置为nil后,iOS可能无法立即释放内存。

请记住,您通过将指针设置为nil来移除它,但是对象仍然保留在堆上,基本上什么都不做,直到在那里分配了其他内容。

(我假设您还使用[self.map removeFromSuperView]从其超级视图中删除了MKMapView。)