Выбор технологии уведомления

По большей части технология уведомления, которую Вы выбираете, должна быть подходящей для типа программирования, Вы делаете. Инструменты командной строки и демоны должны обычно использовать Дарвинские уведомления. Высокоуровневые приложения должны обычно использовать или Базовые уведомления Основы или Какао.

Это - не всегда истина, как бы то ни было. В некоторых случаях может быть более надлежащим выбрать низкоуровневый порядок уведомления даже в высокоуровневом приложении. В этой главе описываются некоторые среды, в которых необходимо выбрать различную технологию, чем наиболее очевидный выбор.

Приложения, связывающиеся с демонами

Когда приложения и демоны должны связаться с уведомлениями, лучший выбор не всегда очевиден.

Конечно, Вы не должны использовать тот же 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 и позже.) Можно узнать больше о Дисковых Арбитражных уведомлениях в Дисковой Арбитражной Ссылке Платформы.