4

アーキテクチャ パターンを使用する場合、 から にオブジェクトを渡すために どちらを使用Objective-Cするかが推奨されます。DataManagerInteractorVIPER

特にBlock Based Callbacksvs. a の使用DataManager Output Protocol

VIPERの元の Mutual Mobile 記事の To Do アプリのサンプル

Block Based Callbacksそのように使用します

- (void)todoItemsBetweenStartDate:(NSDate *)startDate endDate:(NSDate *)endDate completionBlock:(void (^)(NSArray *todoItems))completionBlock;

一方、ブリゲードエンジニアリングからのこのアプローチは

を利用しOutputProtocolますDataManager

[self.interactor foundUser:user];

どちらがより良い方法で、その理由は何ですか?

注: Swift を使用する場合、クロージャーによってコールバック メソッドがよりクリーンになることはわかっています。この質問は、Objective-C を直接参照したものです。

4

2 に答える 2

1

これはカットアンドドライではありませんが、次のとおりです。

  1. コールバックが 1 つしかない場合は、完了ブロックを優先する傾向があります。
  2. 関連するコールバックのファミリがある場合は、プロトコル/委任を優先する傾向があります。

おそらく他のヒューリスティックを使用できます (たとえば、プロトコルを実装するための明らかなオブジェクトがおそらくあり、それを一度だけ実装する必要がある場合は、委任の方が適しています)。

どちらも Apple のフレームワークで使用されています。ブロックの前は、ターゲット/セレクターを使用した呼び出しが多くありました-それを使用しないでください (代わりにブロックを使用してください)

于 2016-02-09T14:34:21.067 に答える