在更多的iPhone 3开发书中,在作者完成了获取更新的locationManager委托方法之后,他将其放在该方法的末尾:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
// some code here
manager.delegate = nil;
[manager stopUpdatingLocation];
[manager autorelease];
}类似地,在MKReverseGeocoder委托方法中,当他完成任务时,他会这样做:
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark {
//some code here
geocoder.delegate = nil;
[geocoder autorelease];
}为什么你需要这样做来清理内存呢?我认为规则是,如果你分配/输入它,你需要释放它。为什么他要将locationManager和Geo编码器添加到自动发布池中?谢谢。
发布于 2011-12-13 23:30:12
这样做是为了避免调用委托方法。
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation或
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark当您释放响应这些CLLocationManager/MKReverseGeocoder协议的对象时
https://stackoverflow.com/questions/6247974
复制相似问题