В Mac OS X какао управляется событиями. Под этим я подразумеваю, что каждая вещь управляется пользовательским интерфейсом - пользователь, нажимая что-то или перемещаясь по определенной области, приводит к вызову обработчика события. Main просто вызывает NSApplicationMain(), который создает бесконечный цикл до выхода программы.Cocoa Event Driven System: где выполняются фоновые задачи?
Как насчет задач, которые не управляются пользователем? Где бы я поставил задачи, которые должны работать в фоновом режиме, чтобы обеспечить базовую функциональность программы? Например, Photo Booth выполняет определенные действия, когда пользователь взаимодействует с пользовательским интерфейсом (т. Е. Переключается на видео камеру при нажатии на определенную кнопку). Тем не менее, Photo Booth также непрерывно извлекает кадры из камеры для обеспечения видеопотока.
Так что мой вопрос в том, куда идти код не-пользовательского интерфейса? Main() на самом деле не является возможностью, так как мне нужны задачи для запуска в течение всей жизни программы, а не когда программа только начинается.
Я нахожусь в Mac OS X Snow Leopard (я хочу что-то, что работает на всех Mac Systems, хотя: например, Lion OS X), и я использую приложение Obj-C Cocoa в Xcode.
Спасибо, резьбы звучат идеально. Мне нужно централизованное место, чтобы объявлять все переменные и запускать потоки. Где бы я это сделал? – fdh
В конце концов, ваша задача всегда будет работать в ответ на что-то (даже если это что-то значит «время прохождения» или «приложение запущено»). Что-то вроде вашего примера Photo Booth, оно будет работать в ответ на обратные вызовы из библиотеки видеозахвата. В случае сетевого приложения он будет работать в ответ на входящие пакеты в сети. «Событие управляется» относится не только к событиям GUI. –
Если я хочу, чтобы это было «управляемо» при запуске приложения, я бы поставил его в главном, как в консольных приложениях? – fdh