Исчезающие предупреждения UILocation в XCode 4.2 с ARC iPhone
Оповещения появляются на долю секунды или не отображаются при запуске приложения в проекте с ARC (без использования ARC все в порядке). (Я добавляю каркас CoreLocation и импортирую его в проект).
Мой код:
#import <CoreLocation/CoreLocation.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
CLLocationCoordinate2D coordinate;
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
NSLog(@"jestem po okienku ");
if (locationManager.locationServicesEnabled == NO)
{
coordinate.latitude = 0.0;
coordinate.longitude = 0.0;
}
else
{
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
CLLocation *location = [locationManager location];
if (!location) {
coordinate.latitude = 0.0;
coordinate.longitude = 0.0;
}
// Configure the new event with information from the location.
coordinate = [location coordinate];
}
return YES; }
1 ответ
Решение
Вы храните указатель менеджера местоположений в локальной переменной. Таким образом, ARC может освободить этот диспетчер местоположений, прежде чем вернуться из этого метода.
Если вы хотите, чтобы этот менеджер местоположения оставался в живых дольше, вам необходимо сохранить долгосрочную ссылку на него. Как ивар или собственность.