Исчезающие предупреждения 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 может освободить этот диспетчер местоположений, прежде чем вернуться из этого метода.

Если вы хотите, чтобы этот менеджер местоположения оставался в живых дольше, вам необходимо сохранить долгосрочную ссылку на него. Как ивар или собственность.

Другие вопросы по тегам