目前我使用NSThread
緩存在另一個線程的圖像。NSThread與NSOperationQueue vs. ???在iPhone上
[NSThread detachNewThreadSelector:@selector(cacheImage:) toTarget:self withObject:image];
或者:
[self performSelectorInBackground:@selector(cacheImage:) withObject:image];
或者,我可以使用NSOperationQueue
NSInvocationOperation *invOperation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(cacheImage:) object:image];
NSOperationQueue *opQueue = [[NSOperationQueue alloc] init];
[opQueue addOperation:invOperation];
是否有任何理由從NSThread
轉走呢? GCD在iPhone上發佈時是第四種選擇,但除非有顯着的性能提升,否則我寧願堅持適用於大多數平臺的方法。
基於@喬恩 - 埃裏克的建議下,我去了NSOperationQueue
/NSOperation
子類的解決方案。它工作得很好。 NSOperation
類非常靈活,您可以根據需要將它與調用,塊或自定義子類一起使用。無論您如何創建您的NSOperation
,只要您準備好運行,就可以將其放入操作隊列中。如果需要,這些操作可以用作放入隊列中的對象,也可以作爲獨立的異步方法運行。由於您可以輕鬆地同步運行自定義操作方法,因此測試非常簡單。
我用在項目屈指可數此相同的技術,因爲我問這個問題,我不能與它讓我的代碼和我的測試中清晰有序,並愉快地異步的方式快樂。
一個++++++++++ 會繼承再次
你可以分析他們每個人。那將是找出答案的方法之一。 – 2010-06-15 01:30:39
表現是錯誤的詞,我懷疑它們在下面都是一樣的。我更想找一個有兩種或兩種以上這些方法的經驗的人來給我一些關於首選方式和爲什麼更好的建議。 – kubi 2010-06-15 01:47:07