Обработка событий потоков в Objective C - PullRequest
0 голосов
/ 21 мая 2011

Я новичок в программировании. Обработка событий в потоке может быть выполнена через Run Loops в Objective C.

Я должен сделать createEvent,ResetEvent,PulseEvent,BeginThread,waitforsingleObject.

Как это сделать в Задаче С. Есть ли материал, который хорошо объясняет эти концепции на примере, отличном от Apple Docs.

Ответы [ 2 ]

2 голосов
/ 08 января 2013

На самом деле здесь не так много информации, но есть некоторые идеи, которые приходили в голову при чтении вашего поста.

Я вижу три подхода к этому:

1) Словарь массивов блоков, где ключом в словаре является событие, которое запускается, а затем, когда менеджер событий получает событие, он циклически перебирает массив для этого ключа и запускает все блоки

2) Настройте систему KVO , где ваши события - ваши ключи / ценности, а ваши наблюдатели - ваши обработчики

3) настроить систему протокола делегата так, чтобы ваш делегат был вашим обработчиком, а ваш протокол отображал события, которые могут быть запущены

у всех есть свои плюсы и минусы, я склонен к 1 и 3, но надеюсь, что это поможет!

1 голос
/ 08 января 2013

Я предполагаю, что вопрос связан с переносом исходного кода Windows на Mac или iOS.

Не совсем полный ответ, но вы можете начать отсюда.

CreateEvent, ResetEvent, WaitForSingleObject => Ссылка на класс NSCondition

Event - это уникальная особенность Windows, но разумно замененная на NSCondtion.

BeginThread => Ссылка на класс NSThread
В частности, метод + (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument.

AfxBeginThread(WorkerThreadProc,NULL,THREAD_PRIORITY_NORMAL,0,0,NULL);
=>
[NSThread detachNewThreadSelector:@selector(WorkerThreadProc:) toTarget:self withObject:NULL];

PulseEvent очень сложно портировать на Mac или iOS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...