Как создать приложение, работающее в 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 (это не связано с тем, что создание сообщения дорогое, и вы хотите сохранить некоторые циклы процессора).