NSOperationQueueを初期化してから3つのクラス(、、、)を追加ClassAしClassBてClassC次々に実行するiPhoneSDK4.0コードがあります。ClassA、、ClassBおよびClassCはすべて。のサブクラスですNSOperation。
関連するコードは以下に含まれています。
ClassA *classA = [[ClassA alloc] init];
ClassB *classB = [[ClassB alloc] init];
ClassC *classC = [[ClassC alloc] init];
[classB addDependency:classA];
[classC addDependency:classB];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperation:classA];
[queue addOperation:classB];
[queue addOperation:classC];
[classA release];
[classB release];
[classC release];
[queue release];
依存関係の理由は、操作が正常に完了したclassB場合にのみ実行する必要があるためです。classA同様に、正常に完了したclassC場合にのみ実行する必要があります。classB
現時点では、たとえば、正常に完了しなかったclassB場合に実行されないようにする方法を理解するのに苦労しています。classAこの例を続けて、私はどういうわけか[NSOperationQueue cancelAllOperations]内部から呼び起こすことを考えていましたが、内部(サブクラス)からclassA親のハンドルを取得する方法がわかりません。これは私の最初の考えだったので、同じ結果を達成するための他のより良い提案を受け入れるでしょう!NSOperationQueueclassANSOperation
各クラス内には、正しく完了したかどうかを判断するための条件付きコードがあります。現時点では、デバッグ目的でコンソールに対して「成功」または「失敗」のNSLを記録しています。NSLog(@"Fail")完璧な世界では、各クラスのステートメントを、NSOperationQueueの他のすべてのクラスの実行を停止するコードに置き換えられるようにしたいと思います。
どんな提案でも大歓迎です(そして感謝します)。