Сравнение адресов NSUbiquityIdentityDidChangeNotification, не равных нулевому указателю, всегда верно

Я получаю это предупреждение в Xcode

comparison of addresses of NSUbiquitycontainerDidChangeNotification not equal to a null pointer is always true

он находится в Core Data Ensembles Framework в

CDEICloudFileSystem.m

in

- (void)addUbiquityContainerNotificationObservers  {

 [self removeUbiquityContainerNotificationObservers];

/// in this line 
if (&NSUbiquityIdentityDidChangeNotification != NULL) {
///

    __weak typeof(self) weakSelf = self;
    ubiquityIdentityObserver = [[NSNotificationCenter defaultCenter] addObserverForName:NSUbiquityIdentityDidChangeNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {
        __strong typeof(weakSelf) strongSelf = weakSelf;
        [strongSelf stopMonitoring];
        [strongSelf willChangeValueForKey:@"identityToken"];
        [strongSelf didChangeValueForKey:@"identityToken"];
    }];
  }
}

Может кто-нибудь сказать мне, как это исправить?

Спасибо


person Kreuzberg    schedule 04.11.2015    source источник
comment
Если вы не пытаетесь поддерживать iOS 5, нет необходимости проверять константу NSUbiquityIdentityDidChangeNotification.   -  person rmaddy    schedule 05.11.2015


Ответы (2)


Я написал этот код. Как уже отмечалось, это необходимо для того, чтобы убедиться, что символ NSUbiquityIdentityDidChangeNotification существует перед его использованием. До iOS 6 этого уведомления не существовало.

Коду несколько лет, а iOS 5 сейчас во фреймворке не поддерживается, поэтому галочку сниму.

Обновление Оказалось, что галочку нельзя убрать, потому что мы по-прежнему поддерживаем OS X 10.7. Поэтому я добавил #pragmas, чтобы отключить предупреждение.

person Drew McCormack    schedule 05.11.2015
comment
Спасибо ! Мое приложение предназначено только для iOS и поддерживает iOS7 и более поздние версии, но не OS X, поэтому я просто удалю строку... !? - person Kreuzberg; 05.11.2015

Проблема в том, что &NSUbiquityIdentityDidChangeNotification — это адрес переменной, и он не может быть NULL. Условие if (&NSUbiquityIdentityDidChangeNotification != NULL) всегда имеет значение true, и Xcode предупреждает вас, что строка бесполезна.

person Jeremy Vizzini    schedule 04.11.2015
comment
Адрес может быть NULL, если работает под iOS 5 или более ранней версии. - person rmaddy; 05.11.2015
comment
Я поддерживаю iOS7 и более поздние версии. Так что я могу просто удалить строку? Просто это не мой код, и я боюсь связываться с фреймворком :/ - person Kreuzberg; 05.11.2015
comment
Да, вы должны удалить if (&NSUbiquityIdentityDidChangeNotification != NULL) { - person Jeremy Vizzini; 05.11.2015
comment
@JeremyVizzini Это не значит, что вам нужно его удалить. В том, что в данном случае это бессмысленно. - person rmaddy; 05.11.2015
comment
@Kreuzberg Если вы предпочитаете не удалять код из файла реализации, напишите выражение следующим образом: ((&NSUbiquityIdentityDidChangeNotification) != NULL). Это удалит предупреждение в Xcode 7. Еще один вариант. - person Nathan B.; 05.11.2015