Исчезающие предупреждения UILocation в XCode 4.2 с ARC iPhone - PullRequest
4 голосов
/ 05 декабря 2011

Предупреждения появляются на долю секунды или не отображаются при запуске приложения в проекте с 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 Ответ

7 голосов
/ 05 декабря 2011

Вы храните указатель менеджера местоположений в локальной переменной.Таким образом, ARC может освободить этот диспетчер местоположений, прежде чем вернуться из этого метода.

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

...