我从这段代码中得到了泄漏的NSCFString。我知道它与NSString有关,但我不明白泄漏是如何发生的。感谢您的帮助...
-(void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark{
NSString *pTitle = [[NSString alloc] initWithString:placemark.title];
mapView.userLocation.title = pTitle;
[pTitle release];
}
答案 0 :(得分:3)
您是否也在泄漏地图视图?在这种情况下,报告的此字符串泄漏只是通过泄漏的地图视图的扩展。
最常泄露的对象通常不是罪魁祸首。罪魁祸首通常是一个单独的对象,持有十几个最泄漏的对象。
此外,您可以将代码缩减为:
-(void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark {
mapView.userLocaltion.title = placemark.title;
}
不需要时不需要进行内存管理:)。
答案 1 :(得分:0)
Apple的框架伙伴中有很多错误..不要担心框架漏洞。
请遵守您身边的规则。对于每个alloc
,copy
或retain
,必须有相应的release
。
iOS也以完全不同的方式处理NSString
。所以最好坚持使用规则。