在更多 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 和 geocoder 添加到自动释放池中?谢谢。