我想了解并理解此代码段
NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc]
initWithTarget:self
selector:@selector(navigatePage)
object:nil];
[queue addOperation:operation];
[operation release];
[queue release];
-(void)navigatePage
//==================
{
[self performSelectorOnMainThread:@selector(loadPageDetails) withObject:nil waitUntilDone:NO];
[myTableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
}
感谢您的时间。
答案 0 :(得分:1)
简而言之,代码看起来被设计为在后台线程中进行一些处理 - 它可能是通过网络获取一些数据(loadPageDetails
),然后它正在用结果更新UI (reloadData
)。 然而,在主线程上调用loadPageDetails
,我不明白 - 如果耗时的话,应该做一个后台线程吗?
您能为代码提供更全面的背景吗?我并没有真正看到在上面的例子中使用NSInvocationOperation
的意义,因为所有的操作都会在主线程上重新开始工作。
使用后台处理的通常原因是在做一些需要时间来完成的事情时不阻塞主线程 - 我假设在主线程上调用设置操作队列的代码位?