我有一個iPhone
應用程序,其中我想在後臺執行一個方法,每個1
秒。iPhone SDK - 在後臺線程中運行重複過程
所以在我的主線程,我在我的UIViewController
viewDidLoad()
有以下代碼:
[NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(repeatedMethod) userInfo:nil repeats:YES];
以下方法:
-(void)repeatedMethod {
if(!processIsRunning) {
processIsRunning = YES;
[self performSelectorInBackground:@selector(runProcessInBackground:) withObject:myImage];
}
}
-(void)runProcessInBackground:(UIImage *)image {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
... Some operations ...
... also call a method on the main thread which sets isProcessRunning to NO
[pool release]
}
的方式,我有這樣的設置,一個新的線程每秒產生一次(除非該進程仍在運行,這要歸功於我的processIsRunning
標誌)。
現在,我的問題是:
(1)這是做到這一點的最好方法是什麼?還是有更合適的方式來保留和重用後臺線程?
(2)什麼可能是最快的方法來做到這一點?每次調用該方法時,我是否都會花時間旋轉新的後臺線程?
代碼可以正常工作,當我在主線程上運行所有內容(我最終不想這麼做)時,它會稍微慢一些。
任何建議將是偉大的! 有沒有人處理過這類問題?
非常感謝, 佈雷特
看看我對這個問題的回答:http://stackoverflow.com/questions/8759264/worker-thread-ios/8759329#8759329 – 2012-03-30 19:27:43
@安德魯,謝謝!但有一個問題:我怎麼能通過一個對象來看待GCD?在我上面的代碼中,這個對象是'myImage'。 – Brett 2012-03-30 19:33:53