У меня есть приложение для какао, в котором я хотел бы использовать Сокеты домена UNIX для связи с общесистемным демоном.Вызов семейства CFRunLoop на приложение Cocoa
На первом этапе мой клиент подключится к демону, а затем прослушивает входящие записи журнала от демона.
Пример, который я нашел, CFLocalServer от компании Apple, использует CFSockets
для обмена данными между двумя утилитами командной строки. Мне удалось установить часть кода демона красиво, потому что я могу решить, какую функцию вызывать у моего демона ([[NSRunLoop currentLoop] run]
или CFRunLoopRun()
). Однако у меня есть сомнения относительно клиента, который является какао-приложением.
В примере кода, клиент сначала создать их, связывает, добавляет их в качестве источника к текущей CFRunLoop
для прослушивания операций, а затем вызывает CFRunLoopRun();
до отмены CFRunLoopStop(CFRunLoopGetCurrent());
Мой вопрос: могу сделать все что внутри блока в очереди последовательной отправки, созданной приложением-какао Objective-C, без вмешательства в NSRunLoop в основной поток моего приложения?
Благодарим вас за ответ. Как подключить сокет к основному циклу запуска в приложении какао? Предположим, я выполнил код в делетете приложения, когда приложение закончило запуск (так что я нахожусь в основном потоке). – 2013-05-01 13:24:49
Как и сейчас, просто используйте 'CFRunLoopGetMain()'. Я предполагаю, что вы уже вызываете 'CFSocketCreateRunLoopSource()' и 'CFRunLoopAddSource()'. Просто добавьте его в основной цикл, а не в какой-нибудь другой цикл. –
Спасибо, это сработало. – 2013-05-04 23:20:04