デリゲートパターンプロトコルを複数のターゲットに通知するディスパッチャを実装しようとしています。Swift 2デリゲートディスパッチャのコピー貼り付けメソッド名を避けたい
すべてのメソッド名のコピー貼り付けを行わずに、次のパターンを実行するより良い方法はありますか?反射、アスペクト指向プログラミング、メタプログラミングのすべての心に来る:参考
public class AirBatteryClientDelegateDispatcher: AirBatteryClientDelegate {
private var targets = [AirBatteryClientDelegate]()
public func clientDidStartScan(client: AirBatteryClient) {
for target in targets {
target.clientDidStartScan?(client)
}
}
. . .
}
を、私はダース以上の同様の方法で、以下のプロトコル使用しています:
@objc public protocol AirBatteryClientDelegate: class {
optional func clientDidStartScan(client: AirBatteryClient)
optional func clientDidStopScan(client: AirBatteryClient)
optional func clientDidUpdateState(client: AirBatteryClient)
. . .
}
代わりに通知ベースのパターンを使用するのはなぜですか?そうすれば、これらのメソッドをデリゲートに渡す必要はありません。 –
通知が短時間で済むと思いました。私は、UI更新のコールバックを使用しています。 –
私はあなたの目がUIアップデートを使って登録することができないマイクロ秒を探していない限り、それが問題であるとは思わない。とにかくUI更新のためにメインスレッドにディスパッチする必要があります(遅延もあります)。 –