我打电话就像一个了methodA方法background.now如果我所说的从methodA.should所谓的methodB漫长的方法我单独提到这是在background.the我之所以问这个问题是,尽管在后台线程中调用了冗长的进程,但ui挂了一段时间。UI挂起inspite调用后台线程漫长的方法
即
[self performSelectorInBackground:@selector(methodA)];
-(void)methodA
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
[self methodB];
[pool drain];
}
-(void)methodB
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
//some lengthy process
[self performSelectorOnMainThread:@selector(updateTable) withObject:nil waitUntilDone:NO];
[pool drain];
}
-(void)updateTable
{
[self.tableview reloadData];
}
是调用后台方法正确的这种方式?
如果的methodB只从被称为了methodA的NSAutoreleasePool中的methodB可能有些过分 - 你已经由一个在了methodA建立覆盖。 – occulus
当你说用户界面挂起,你的意思是它完全没有响应和/或动画停止?更多细节请... – occulus
我看不出任何明显的错误与上面的代码。发布简化的演示代码而不是实际的代码可能会隐藏问题的症结所在。你能发布更多有问题的实际代码吗? – occulus