1

NSOperation でコードを順番に実行したいと思います。これは、たとえば私のコントローラーで NSInvocationOperation をインスタンス化することで簡単に実行できます。

NSOperationQueue *queue = [NSOperationQueue new];

NSInvocationOperation *prepare = [[NSInvocationOperation alloc] initWithTarget:self 
                                                                      selector:@selector(prepare) 
                                                                        object:nil];

NSInvocationOperation *load = [[NSInvocationOperation alloc] initWithTarget:self 
                                                                selector:@selector(loadData) 
                                                                        object:nil];

[load addDependency:prepare];

これは完全に機能し、何よりも操作間の依存関係を維持できます。しかし、ご覧のとおり、操作自体をカプセル化するメソッドを作成する必要がありました。代わりに、呼び出しをコードのフラグメントとしてインスタンス化し、依存関係を維持したいと思います。したがって、私のView Controllerは、二度と使用されないメソッドに対してクリーンになります。

^block オプションがあるのを見ましたが、依存関係が維持されていないようです。

ありがとう

4

1 に答える 1

3

のサブクラスで依存関係を追加できるはずですNSOperation。あなたの場合、おそらく欲しいNSBlockOperation

NSOperation *prepare = [NSBlockOperation blockOperationWithBlock:^{
    // code here
}];

NSOperation *laod = [NSBlockOperation blockOperationWithBlock:^{
    // code here
}];

[load addDependency:prepare];
于 2012-06-27T15:58:52.643 に答える