планирование потока после потока в приложении iphone - PullRequest
5 голосов
/ 28 октября 2009

Я хочу запланировать поток после завершения потока.

Возможно ли это? Как?

Например (указать мою потребность)

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    // 1. response - schedule myThread 
    // 2. response - schedule a new thread which will be executed after myThread
    // 3. response - schedule a new thread which will be executed after second thread
    // .....
}

Ответы [ 2 ]

10 голосов
/ 28 октября 2009

Если вы используете NSOperations , вы можете использовать метод addDependency: , чтобы указать зависимости операции.

NSInvocationOperation , вероятно, будет вам полезно, если вы пойдете по этому пути.

Редактировать: Я просто перечитал тему, и вы на iPhone, поэтому у вас нет блоков, но для справки, если у вас есть доступные блоки, NSBlockOperation еще лучше.

Обратите внимание, что при использовании этих методов для выполнения асинхронных операций (и при условии, что код в них использует авто-релиз) вы будете ответственны за создание экземпляра NSAutoreleasePool, когда ваш метод запускается, и его освобождение / слив после выхода.

2 голосов
/ 28 октября 2009

(1) Вы можете опрашивать темы isFinished свойство.

(2) Вы можете зарегистрировать свой диспетчерский / управляющий объект, чтобы получать нити NSThreadWillExitNotification. Для более точного управления вы можете создать подкласс NSThread и отправить уведомление в качестве последнего действия до остановки потока. Затем в вашем обработчике уведомлений об управляющих объектах вы можете опросить isFinished, чтобы убедиться, что все сделано, прежде чем запускать следующий поток.

См. Руководство по программированию потоков и NSThread Class Guide .

...