Я пытаюсь реализовать поиск в фоновом потоке, используя NSOperation
на iOS
. Я не хотел создавать подкласс NSOperation
, поэтому я делаю вот что:
[searchQueue cancelAllOperations];
NSInvocationOperation *op = [[NSInvocationOperation alloc] initWithTarget:self
elector:@selector(filterContentForSearchText:)
object:self.searchDisplayController.searchBar.text];
[searchQueue addOperation:op];
[op release];
Метод поиска включает цикл for, который проверяет, находится ли искомый объект в массиве. Теперь, когда я отменяю NSOperation
, вызывая cancelAllOperations
, цикл for продолжает проходить через массив. Я хотел бы предотвратить это, и мне было интересно, допустимо ли вызывать это из цикла for:
if ([[[searchQueue operations] objectAtIndex:0] isCancelled]) {
[tmp_array release]; // tmp_array is used to hold temporary results
[pool drain]; // pool is my autorelease pool
return;
}