У меня есть задача, которая занимает довольно много времени и должна работать в фоновом режиме. Согласно документации, это можно сделать с помощью NSOperationQueue
. Тем не менее, я не хочу хранить глобальную копию класса NSOperationQueue
, поскольку я действительно использую ее только для одной задачи. Следовательно, я просто установил его на autorelease и надеюсь, что он не будет выпущен до того, как задача будет выполнена. Это работает.
например:
NSInvocationOperation *theTask = [NSInvocationOperation alloc];
theTask = [theTask initWithTarget:self
selector:@selector(doTask:)
object:nil];
NSOperationQueue *operationQueue = [[NSOperationQueue new] autorelease];
[operationQueue addOperation:theTask];
[theTask release];
Я немного обеспокоен. Гарантировано ли это? Или может operationQueue
получить освобождение в какой-то момент и взять с ним theTask
?