【技術情報】iOS 4のNSOperationはGCD使用か否かの俺様用まとめ
iOS4 では、NSOperation は GCD で実行されているのでしょうか‥ [@tucitter]
2010-08-03 18:56:10.@tucitter シミュレータでしか確認してませんが、GCDが使われているようです。_dispatch_worker_thread2 とか _dispatch_call_block_and_release とか非公開のAPIのようですが。 [@ClimbAppDev]
2010-08-03 19:12:02.@hkato193 NSOperation Class Reference には使っているようなことが書いてあるのですが(libdispatch library の記述のあたり)、どうなんでしょう。。英語に自信がありません。 [@ClimbAppDev]
2010-08-03 19:36:02NSOperationの方には無く、NSOpearationQueueの方です。2つ目のNotesです。→ http://bit.ly/9KVlwR [@hkato193]
2010-08-03 19:48:02.@hkato193 はい、そちらは確認しております。双方のリファレンスを読んでたぶん理解できました。GCDでも使われている libdispatch ライブラリを使ってるよ。GCDは使ってないよ。ということのようですね。御指摘ありがとうございました。 [@ClimbAppDev]
2010-08-03 20:08:02.@tucitter 蒸し返すようですが、iOS 4 上では NSOperation は GCD で実行されています:https://devforums.apple.com/message/227128 ドキュメントは更新漏れかもしれません。 [@ppmtw]
2010-08-03 21:38:02NSOperation の件、皆様どうもありがとうございました。NSDateFormatter もそうですが、Apple のドキュメントも結構不備があるのですね‥。 [@tucitter]
2010-08-04 22:56:04さっき実機で確認した。iOS4のNSOperationQueueはgcdベースです。前調べた通りで。。前も実機で確認してたかも。
2010-08-05 22:11:28isConcurrentがYESでもNOでも別スレッド(gcdのスレッドから)start->mainが呼ばれます。
2010-08-05 22:12:16NSOperationQueueの+ (id)mainQueueにOperationを入れると、MainThreadで実行されます。gcdのdispatch_get_main_queueと同じ役割。
2010-08-05 22:15:49mainQueueに入れるとき、OperationのisConcurrentは無視されてます。普通のqueueに入れても無視されるので同じです。
2010-08-05 22:16:47NSOperationQueueのリファレンスに、iOSではGCD使ってません、とありますが、OS3以前は確かにそうなので、あながち間違いでもない。OS4以後は10.6と同じ、という追記が必要に思います。
2010-08-05 22:18:33