【发布时间】:2010-12-20 18:51:22
【问题描述】:
我正在尝试在iOS 上使用NSOperation 在后台线程上实现搜索。我不想继承NSOperation,所以这就是我正在做的事情:
[searchQueue cancelAllOperations];
NSInvocationOperation *op = [[NSInvocationOperation alloc] initWithTarget:self
elector:@selector(filterContentForSearchText:)
object:self.searchDisplayController.searchBar.text];
[searchQueue addOperation:op];
[op release];
搜索方法包含一个 for 循环,用于检查正在搜索的内容是否在数组中。现在,当我通过调用cancelAllOperations 取消NSOperation 时,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;
}
【问题讨论】:
标签: iphone objective-c ios nsoperation nsoperationqueue