Как создать приложение, работающее в Mac OS 10.6 и поддерживающее NSUserNotificationCenter?
Я провел много исследований, но я просто не мог найти то, что искал:
В настоящее время для Deployment Target
и Base SDK
моего приложения установлено значение 10.8
, и он работает отлично. Я могу правильно опубликовать уведомление в новом Центре уведомлений Mountain Lions!
Чтобы создать приложение, которое также работает под Mac OS 10.6
, я установил для развертывания Target значение 10.6 и построил его (как рекомендовано в этом потоке), К сожалению, приложение сработало с ошибкой 10.6, и в отчете о сбое подробно указано, что NSUserNotificationCenter не найден (без обработки версии ОС).
-
Итак, что я, безусловно, должен сделать, это проверить, существует ли класс NSUserNotificationCenter:
notificationCenterIsAvailable = (NSClassFromString(@"NSUserNotificationCenter")!=nil);
и работать на основе этого логического флага.
Но как насчет кода, который не может быть основан на этом флаге, например:
- интерфейс
..: <NSUserNotificationCenterDelegate> {
- или тип ссылки на Центр уведомлений:
NSUserNotificationCenter *center
в свойствах класса?
Моя первая мысль заключалась в том, чтобы динамически изменять заголовок класса во время выполнения, т.е. добавлять методы и свойства для обработки Notificaion Center на основе того, существует или нет класс, но это кажется действительно сложным?!
Ответы
Ответ 1
Это проблемы компиляции, и все будет хорошо, если базовый SDK будет 10.8. Указатель center
может оставаться в nil
, если NSUserNotificationCenter
не существует, и поэтому вы можете использовать его в качестве флага для проверки того, выполняете ли вы уведомления или нет при запуске кода после теста.
РЕДАКТИРОВАТЬ Фактически оставить его nil
означает, что вам даже не нужно его проверять; просто отправьте сообщения как обычно, и они будут проигнорированы, если указатель nil
(это не связано с тем, что создание сообщения дорогое, и вы хотите сохранить некоторые циклы процессора).