我知道的兩種方式來獲得一個操作隊列如下:的iOS開發約NSOperationQueue
queue1 = [[NSOperationQueue alloc] init];
queue2 = [[NSOperationQueue mainQueue] retain];
但我不知道他們之間有什麼區別。
[queue1 addOperation:operation1];
[queue2 addOperation:operation2];
哪個線程執行operation1?主線程?或不確定性?
我測試過了。
operation1 --> sometimes mainthread sometimes not.
operation2 --> always mainthread.
關於'NSOperationQueue'的文檔已經過時了。 'NSOperation'的文檔指出,從Mac OS X 10.6(以及iOS 4.0)開始,所有操作都是從一個單獨的線程開始的,並且從'isConcurrent'返回的值將被忽略。 – omz
該文檔還包括:在OS X中,但在_not_ iOS中,NSOperationQueues是使用GCD實現的:「因此,操作總是在單獨的線程上執行。我上面的報價在iOS特定部分。 (這在iOS5中可能會有所不同,我還沒有檢查過,也無法引用它。) –
其實......我明白你的意思了。技術說明(https://developer.apple.com/library/prerelease/ios/#qa/qa1712/_index.html#//apple_ref/doc/uid/DTS40010262)表明iOS4 _does_使用GCD。 –