Выбор технологии уведомления
По большей части технология уведомления, которую Вы выбираете, должна быть подходящей для типа программирования, Вы делаете. Инструменты командной строки и демоны должны обычно использовать Дарвинские уведомления. Высокоуровневые приложения должны обычно использовать или Базовые уведомления Основы или Какао.
Это - не всегда истина, как бы то ни было. В некоторых случаях может быть более надлежащим выбрать низкоуровневый порядок уведомления даже в высокоуровневом приложении. В этой главе описываются некоторые среды, в которых необходимо выбрать различную технологию, чем наиболее очевидный выбор.
Приложения, связывающиеся с демонами
Когда приложения и демоны должны связаться с уведомлениями, лучший выбор не всегда очевиден.
Если демон записан с Какао или Базовой Основой, можно использовать Какао, Базовую Основу или Дарвинский механизм уведомления, в опции.
Если демон не на основе Базовой Основы (например, большая часть межплатформенного программного обеспечения с открытым исходным кодом), обычно намного проще использовать Дарвинские уведомления в демоне, потому что можно сделать так, не создавая цикл выполнения.
Дарвинские уведомления также проще наброситься на существующих демонов UNIX/Linux, потому что эти демоны часто уже используют сигнальные обработчики для обработки событий и Дарвинской поставки сигнала предложений как один из ее поддерживаемых способов доставки.
Для демонов то использование дескрипторы файлов (
select(2)
циклы), Дарвинские уведомления могут быть интегрированы более легко, потому что это предлагает дескрипторы файлов как поддерживаемый способ доставки. Используя Дарвинские уведомления непосредственно значительно проще, чем перезапись основного программного цикла как CFRunLoop (и, для проектов с открытым исходным кодом, намного более вероятно, будет принят в их официальное исходное дерево).
Конечно, Вы не должны использовать тот же API в своем приложении как в демоне. Пока Вы ограничиваете свое использование Базового уведомления Основы или Какао APIs к пустым сообщениям (т.е. сообщения с только именем), можно использовать тот APIs в приложении и все еще использовать Дарвинское уведомление API в демоне.
Смешанные приложения углерода и какао
Уведомления какао (NSNotificationCenter
) и Базовые уведомления Основы (CFNotificationCenterRef
) может связаться друг с другом, упростив обеспечивать уведомления между приложениями Углерода и Какао. Однако, потому что эти типы не бесплатные соединенный мостом, Вы не можете бросить между ними.
По большей части это не проблема. Однако, если необходимо отправить уведомления от частей приложения, записанного в Углероде, может быть проще использовать Базовые уведомления Основы повсюду. Это упростит совместно использовать структуры данных между C и частями Objective C Вашего кода, не представляя избыточность.
Точно так же, если Вы добавляете уведомления приложениям Углерода и Какао одновременно и должны записать какой-либо код связующего звена, который характерен и для Ваших приложений Углерода и для Какао, можно счесть более удобным записать единственный модуль уведомления на основе Базовых уведомлений Основы во избежание поддержания многократных версий кода связующего звена.
Предоставленные системой уведомления
Много частей OS X обеспечивают уведомления другими способами. Примеры включают Набор I/O, Дисковый Арбитраж, Конфигурацию системы (configd
), и очереди ядра. Чтобы склониться, как получить эти уведомления, необходимо считать документацию Apple о тех технологиях.
Очереди ядра и уведомления о событии ядра являются намного лучшей альтернативой опросу относительно изменений файла. Уведомления о событии ядра также обеспечивают способ узнать о многих других связанных с ядром событиях. Механизм очередей ядра описан в Руководстве по программированию Событий Файловой системы и в страницах руководства для kevent(2)
и kqueue(2)
.
Механизм уведомления Набора I/O базируется вокруг IOService
класс. Регистрация для и регистрация уведомлений описаны в Основных принципах IOKit.
Уведомления Конфигурации системы предоставлены через платформу Конфигурации системы. Можно узнать больше об этой платформе Инструкциями по Программированию Конфигурации системы считывания и Ссылкой Платформы Конфигурации системы.
Когда объем смонтирован или размонтирован, дисковые Арбитражные уведомления могут сказать Вам. (Можно также изучить, когда объемы смонтированы или размонтировали использование Событий Файловой системы API в OS X v10.5 и позже.) Можно узнать больше о Дисковых Арбитражных уведомлениях в Дисковой Арбитражной Ссылке Платформы.