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
親のハンドルを取得する方法がわかりません。これは私の最初の考えだったので、同じ結果を達成するための他のより良い提案を受け入れるでしょう!NSOperationQueue
classA
NSOperation
各クラス内には、正しく完了したかどうかを判断するための条件付きコードがあります。現時点では、デバッグ目的でコンソールに対して「成功」または「失敗」のNSLを記録しています。NSLog(@"Fail")
完璧な世界では、各クラスのステートメントを、NSOperationQueueの他のすべてのクラスの実行を停止するコードに置き換えられるようにしたいと思います。
どんな提案でも大歓迎です(そして感謝します)。