在什麼情況下,您寧願使用NSOperationQueue
而非GCD?NSOperationQueue vs GCD
從我對這兩者的有限經驗來看,我認爲用NSOperationQueue
你基本上可以控制有多少併發操作。
有了GCD,你不能這樣做,因爲你正在使用一個隊列。除了你可以用多核處理器模擬這種情況,雖然我仍然認爲沒有辦法控制它。
在什麼情況下,您寧願使用NSOperationQueue
而非GCD?NSOperationQueue vs GCD
從我對這兩者的有限經驗來看,我認爲用NSOperationQueue
你基本上可以控制有多少併發操作。
有了GCD,你不能這樣做,因爲你正在使用一個隊列。除了你可以用多核處理器模擬這種情況,雖然我仍然認爲沒有辦法控制它。
NSOperationQueue
構建於iOS 4的GCD
上。使用最簡單的API處理任務。評估它是否是性能問題,然後在需要時重新評估。 dispatch_async
屬於較低級別,通常爲C類型(但不限於此),適用於一次性和順序類型的交易。 NSOperationQueues是更高級別的Objective-C的東西,如果您要在代碼中的各個位置添加大量操作,並且/或者需要管理併發性,優先級和依賴關係,那麼它們是很好的選擇。
是NSOperationQueue是一個比GCD更高的API嗎? – xonegirlz
NSOperation建立在GCD之上。 NSOperation體積龐大,需要更多的鍋爐代碼來設置它,但它有更多的功能。你可以在代碼的不同部分創建相同的NSOperation子類,並將它們放入隊列並運行。 –
我假設你是指NSOperationQueue,由NSPriorityQueue?使用NSOperationQueue在GCD的主要原因是,如果你需要它的附加功能:
否則,除非你使用的是需要一個NSOperationQueue的API時,GCD可能是一個更好的選擇
在更高層次上,我發現NSOperationQueue更優雅,可以管理任務/操作,而不是使用GCD在較低級別處理它們。
你可以添加更多的細節,爲什麼你發現NSOperationQueue更優雅?沒有這個,你的答案是沒有用的。 – cmaster
可能的重複http://stackoverflow.com/questions/7146052/gcd-nsoperationqueue-or-create-a-thread-manually http://stackoverflow.com/questions/4344884/nsoperation-vs-grand-central -dispatch – 0x8badf00d
[NSOperation vs Grand Central Dispatch]可能的重複(http://stackoverflow.com/questions/10373331/nsoperation-vs-grand-central-dispatch) – Monolo