Я хотел бы создать пользовательский агент в Objective-C, который прослушивает уведомления по умолчанию NSDistributedNotificationCenter
. У агента нет графического интерфейса. Когда я создаю приложение Cocoa (я также буду использовать Distributed Objects, который, я думаю, только в Cocoa), в Xcode, Xcode устанавливает проект как графическое приложение.Разработка пользовательского агента без GUI в Objective-C с использованием NSDistributedNotificationCenter
В основной функции я удаляю вызов функции NSApplicationMain(...)
, чтобы удалить элементы GUI из приложения. Однако теперь я не могу заставить поток ждать (слушать) уведомлений, поступающих с NSDistributedNotificationCenter
. Приложение только начинается и немедленно завершает работу.
Я посмотрел в использовании NSRunLoop
из текущего NSThread
, однако, кажется, что NSRunLoop
подождем только на NSPort
с. Там нет упоминания о ожидании на NSNotifications
.
Если вы имеете в виду 'NSProxy' и' NSDistantObject' и весь этот беспорядок, то это в Foundation, а не AppKit (оба из которых являются Cocoa). Вам не нужен AppKit для распределенных объектов. Однако вы можете посмотреть XPC. Это новое в Lion, но в зависимости от того, что вы делаете, это может быть намного проще, чем использование удаленных объектов. –
@JasonCoco Спасибо за информацию. Я взглянул на XPC. Кажется, что XPC - это способ разбить ваше приложение на отдельные «процессы», так что если один из процессов завершится с ошибкой, это не повлияет на другой процесс. Например, если я пишу приложение типа Mail.app, я могу написать сборщик писем в одном процессе, а почтовый читатель - в другом. Если сбой почтового отправителя, я все равно могу прочитать загруженную почту. Это было мое впечатление от использования XPC. В моем случае я пишу архитектуру клиент-сервер, и мне нужен сетевой доступ (а не только IPC). –
Хорошо. В этом случае вы можете просто написать программу Foundation. –