Как вы можете проверить, установлена ли константа во время выполнения? Например, в iOS 4 доступен UIApplicationDidEnterBackgroundNotification, но при работе на iOS 3 он выдает ошибку, если вы попытаетесь его использовать.
iPhone, проверьте наличие постоянного
Ответы (1)
Вам, вероятно, следует посмотреть этот другой вопрос, который, на мой взгляд, также отвечает на ваш. if (&UIApplicationWillEnterForegroundNotification != NULL)
должен быть безопасным для динамических ссылок и сообщать вам, существует ли константа или нет.
person
Romain
schedule
03.07.2010
Если вы используете LLVM, вам нужно проделать несколько уловок, чтобы заставить его не отказываться от вашего оператора if. У меня это работает. BOOL backgroundOK = & UIApplicationDidEnterBackgroundNotification! = NULL; if (backgroundOK) {[[NSNotificationCenter defaultCenter] addObserver: селектор: @selector (applicationDidEnterBackground :) имя: UIApplicationDidEnterBackgroundNotification bject: nil]; }
- person David Beck; 05.07.2010
Исправлена ли эта ошибка оптимизатора в компиляторе LLVM / Clang? В какой версии?
- person Nikita Zhuk; 20.04.2011
Это не ошибка LLVM, а особенность. LLVM оптимизирует операторы без побочных эффектов, и это хорошо. Но для этого типа кода это немного усложняет работу.
- person Romain; 21.04.2011
Почему бы не использовать
#ifdef
?
- person Iulian Onofrei; 29.10.2014
@IulianOnofrei, потому что UIApplicationWillEnterForegroundNotification не является макросом ...
- person Romain; 03.12.2014