2010-10-07 52 views
1

我是一個看似直截了當的問題,我似乎無法找到答案(它妨礙我的應用程序)。iPhone SDK後臺線程調用其他方法

我有運行paricular方法在後臺線程:

-(void)processImage:(UIImage *)image { 

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 

    //Process image here in the background here 

    [pool drain]; 
} 

這個不多的偉大工程,但我的問題是當我想打電話從已經背景方法中的另一種方法。此通話是否保留在後臺?我是否需要將NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];[pool drain];添加到新方法中以使其在後臺運行?

任何建議將是非常有益的。我對此有點困惑。

非常感謝, 佈雷特

回答

1

它會留在後臺,在同一個線程它是從呼籲。

一些線程筆記考慮與此:

  • 它可能不是很明顯,但如果你調用從後臺線程定時器,定時器之前線程退出應該走下車,計時器將不會被調用。因此,建議您從主線程安裝定時器。
  • 除非生成另一個線程,否則不需要另一個自動釋放池。
  • 任何UI更新應該在主線程
0

你並不需要添加另一個自動釋放池,你已經有足夠的一個上完成。是的,所有來自該線程的調用都保留在該線程中,因此也可以「在後臺」運行。例外情況是使用「performSelectorOnMainThread:」,這當然會使給定的選擇器在主線程上執行:-)如果你想調用GUI方法(比如在UIImageView上設置圖像),你應該確保所以在主線程上。請參閱文檔「performSelectorOnMainThread:waitUntilDone:」(抱歉不給您鏈接,我正在iPad上輸入此內容)。

相關問題