一般的に関数型リアクティブ プログラミングでやろうとしていることは、デリゲートの使用を可能な限り取り除くことです。MutablePropertyデリゲート クラスに a を追加する方が、もう少しステートフルに見えるのは正しいです。MutableProperties は、ステートレス パラダイムとステートフル パラダイムの間の一種の架け橋です。  
それで、これはどういう意味ですか?
物事が変化したときにイベントを処理するために使用するデリゲートを作成する代わりに。イベントをシグナルとして観察し、イベントに反応する方法を見つけます。例がおそらく最も理解しやすいでしょう。
提示しているモーダル ビューがあり、提示するコントローラーが提示されたビュー コントローラーのデリゲートであるとします。提示コントローラーをモーダルに渡します...
func showModal() {
  let modalVC = ModalViewController()
  modalVC.delegate = self
  self.presentModalViewController(modalVC, animated: true)
}
func modalComplete() {
  self.dismissViewControllerAnimated(true, completion: nil)
  print("All Done with Modal.")
}
次に、ある時点で提示されたコントローラー (明らかにすべてのデリゲート プロトコルのものは表示されません)。
func allDone() {
  self.delegate?.modalComplete()
}
FRPのやり方
デリゲート パターンをFRPに置き換えると、次のような結果になります...
func showModal() {
  let modalVC = ModalViewController()
  modalVC.completionSignal
    .startWithNext { [weak self] _ in
      self.modalComplete()
    }
  self.presentModalViewController(modalVC, animated: true)
}
func modalComplete() {
  self.dismissViewControllerAnimated(true, completion: nil)
  print("All Done with the FRP Modal.")
}
そして、モーダルで、モーダルを閉じるときに何かを送信できるシグナルを作成します。
let (completionSignal, completionObserver) = SignalProducer<String, NoError>.buffer(1)
func allDone() {
  completionObserver.sendNext("Whatever you want")
  completionObserver.sendComplete()
}
お役に立てれば。デリゲートと FRP の両方を操作すると混乱する可能性があります。RAC4 で最も気に入っている点の 1 つは、この面倒なパターンを置き換える機能です。
次のようにモーダルView Controllerで定義することによりSignal、 a ではなくtrue を使用することもできますSignalProducer
let (completionSignal, completionObserver) = Signal<String, NoError>.pipe()
そして、それを開始して観察するのではなく、親View Controllerで観察するだけです。