GCD&NSOperationの違い
NSOperation:
はOCでGCDのパッケージです
iOS 2.0が発売され、GCDが発売された後、アップルはNSOperationの下層にを書き直した.
コアコンセプト:「オペレーション(非同期で実行されるタスク)」を「キュー(グローバル)」に追加
はGCDが実現しにくい機能を提供しています同時同時実行の操作数を制限する:(iOS 7.0以前、GCDまたはNSOperatioinを使用する最大のスレッド数は一般的に5~6本しかない;iOS 8.0以降、スレッド数は大きくなる)キューを一時停止/継続/キャンセルするすべてのタスクタスクを指定できる「依存」関係 GCD:
はC言語であり、マルチコア向けの同時技術である.
iOS 4.0から発売されたコアコンセプト:「タスク(block)」をキュー(グローバル/シリアル/同時/プライマリ)に追加し、タスクを実行する関数(同期/非同期)を指定します.
高度な機能遅延動作使い捨てスケジューリンググループ GCDコンセプト:
タスクをキューに追加し、タスクを実行する関数を指定します.
の3要素:タスク、キュー、タスクを実行する関数タスクはblockパッケージを使用
タスクを実行する関数:1.非同期dispatch_async*現在の文の実行が完了するのを待つ必要はありません.次の文を実行できます.*スレッドがblockを実行するタスクを開きます.
2. dispatch_sync
* ,
*
* block
キュー-タスク1のスケジュールを担当します.シリアルキュー*一度に1つのタスクしかスケジュールできません*dispatch_queue_create("name", NULL);
2.
*
* dispatch_queue_create("name", DISPATCH_QUEUE_CONCURRENT);
3.
*
*
* ,
* dispatch_get_main_queue();
小結
スレッドが開かないこととタスクを実行する関数が関係しています:非同期、同期が開かない何本のスレッドを開くかはキューによって決定される:シリアルキューは1本のスレッドを開き、パラレルキューはN本のスレッドを開く.
実際の開発では,スレッド数がどのように決定されるか
WIFI下、一般6本 3 G/4 Gモバイル開発時、2~3本NSOperation
NSOperationは「抽象クラス」であり、を直接使用することはできない.
抽象クラスの使用は、サブクラス共通の属性およびメソッドを定義することである.
アップルのヘッダファイルでは、抽象クラスとサブクラスの定義の中には、同じヘッダファイルのがあります.
すでに学習した抽象類は UIGestureRecognizer CAAnimation CAPropertyAnimation NSOperationのサブクラス NSInocationOperation NSBlockOperation NSOperationQueueキューコードリンク