2010-07-03 2 views
6

Как вы можете проверить, установлена ​​ли константа во время выполнения? Например, в iOS 4 доступна UIApplicationDidEnterBackgroundNotification, но при запуске на iOS 3 она будет проходить через ошибку, если вы попытаетесь ее использовать.iPhone, проверьте наличие константы

ответ

12

Возможно, вы должны посмотреть на this other question, который, на мой взгляд, также отвечает на ваши вопросы. if (&UIApplicationWillEnterForegroundNotification != NULL) должен быть динамически связующим и указывать, существует ли константа или нет.

+0

Если вы используете LLVM, вам нужно сделать некоторые трюки, чтобы заставить его не оплотировать ваш оператор if. Это работает для меня. BOOL backgroundOK = & UIApplicationDidEnterBackgroundNotification! = NULL; if (backgroundOK) { [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector (имя приложенияDidEnterBackground :): UIApplicationDidEnterBackgroundNotification bject: nil]; } –

+0

Неужели ошибка оптимизатора уже установлена ​​в компиляторе LLVM/Clang? В какой версии? –

+0

Это не ошибка в LLVM, а функция. LLVM будет оптимизировать заявления без побочных эффектов, и это хорошо. Но это делает материал немного более жестким для этого типа кода. – Romain

Смежные вопросы