我打電話就像一個了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