[Swift] Delegation, Notification, KVO


3つとも差が少ないように見えますが、違いは何ですか.それぞれの使い方には何が違いますか.
上記の問題で、私はこの文章を書くことにしました.
3つの方法があれば3つの理由があるのではないでしょうか.

Delegation、Notification、KVOの理由


すべてのオブジェクトに+コミュニケーション
上記2つの条件を満たすために,3つのモードが出現した.
コントローラは1つのビューに依存します.では、他のコントローラのビューは操作(またはコミュニケーション)できないのではないでしょうか.
でもやりたい.作りたかったので上の図案が出てきました
それぞれに存在し、必要なときだけ言いたい.
2021~30代が望む生活のようです.それぞれの生活だけど欲しい時に言いたいことは…?

Delegation


ログインしました.すべてのUIを変更したいです.私はあなたのViewを操作できません.手伝ってください.
上記の場合、Delegationを使用することもできます.
(もちろん、ログイン時に多くのビューを変更する必要がある場合は別です.)
SWIFT公式文書は以下のように定義されている.
委任は、クラスまたは構造が::責任の一部::他のタイプのインスタンスに移行するか、または::委任:.この設計モードは、定義::プロトコル::によって委任された責任をカプセル化し、定義::実装:::を定義します.したがって、プロキシと呼ばれるフォーマットに従って委任された機能が提供されることを確認します.委任は、特定の操作に応答したり、ソースのデフォルトのタイプを知ったりすることなく、外部ソースからデータを取得するために使用できます.
(出典:https://docs.swift.org/swift-book/LanguageGuide/Protocols.html)
要するに、
::実装プレゼンテーション::目的::,ヘルプ実行::プロトコル:::手段:
実装方法または具体的な情報を再検討します.今日、このドキュメントは使用状況と目的のみについて作成します.
ではなぜDelegationを使うのでしょうか?
なぜなら、
  • の利点
  • - Protocol을 작성할 때, 메소드를 생성한다. 그로인해 메소드를 생성하는 것을 깜빡하는 것을 미연에 방지할 수 있다. (메소드의 동작을 작성하지 않으면 Error로 알려줌)
    
    - "Protocol 생성->delegate메소드 사용 -> delegate 메소드 정의" 과정에서 이를 관장할 제 3의 객체가 필요없다.
    
  • 欠点
  • - 코드량이 많아진다.
    
    - 많은 객체를 호출하기 어렵다. (상대적으로 비효율적)
    うん.ここまで言うと、1:1のコミュニケーションで使いやすいと思います.
    まさか私だけ...?

    Notification


    アプリケーションにはNotification Centerというモノトーンオブジェクトがあります.(アプリケーションの作成時に自動的に作成されます.)
    このオブジェクトは、イベントが発生していることを確認します.イベントが発生した場合(投稿された場合)、そのイベントを観察している観察者の動作方法が呼び出されます.
    どうやってコミュニケーションしますか?
    Notification Centerにアプリケーションを登録します.(ex.Aノード)
    観察Aノードの観察者を登録します.(Aノードは最初のコントローラで観察された.)
    Aノードを実行します.(post)(他のコントローラからAノードを呼び出す.)
    では、最初のコントローラと別のコントローラとの間で通信が行われます.
    たとえば、ログインに成功したとします.
    로그인을 담당하는 컨트롤러에서 로그인을 성공했으니, 로그인 성공 노티를 호출합니다.
    이를 관찰하고 있던 "내정보" 컨트롤러에서 노티를 받습니다.
    그리고 그 노티에 따라 이미지를 변경합니다.
    では、どうしてこれを使うのですか.
    次の長さのためです.
  • の利点
  • - 코드가 간결하다.
    
    - 다수의 객체에 알려줄 수 있다.
    
    - 정보를 전달할 수 있다. (키워드: userInfo)
  • 欠点
  • - 관찰이 잘 되고 있는지 체크하는 것이 불가능하다. (직접 경험한 사실은 아니라 설명이 부족하네요 ㅠㅠ)
    
    - 추적이 쉽지 않다.
    
    - post 이후 정보를 받을 수 없다.
    1:Nのコミュニケーションで良い感じ

    Key Value Observing


    これに対して、私たちは「多」(Da)で投稿します.
    アップロードすると、ここにリンクを掛けます.

    n/a.結論


    この文章の原作者
    KVOは単位の変化を検出するのに使われるそうです.
    DelegationとNotificationは、用途があいまいなため、この2つの状況を区別しています.
    推奨Delegationコードが読みやすいからです.(追跡しやすい)
    うーん...もちろん、Delegationの名前は通常class name+delegateなので、コードは確かに読みやすく、どこで使うか分かりやすいです.
    理由がはっきりしないのは事実だ.Notificationの名前を書く方法もあります
    私個人の結論です.
    1:1通信=>Delegation
    1:N通信=>Notification
    暫定結論を発表した.
    しかし,開発経験や他のコードを学習した後,より明確な基準が得られる可能性がある.
    などの基準が明確になってから文章を補充します!

    参考資料

  • https://shinesolutions.com/2011/06/14/delegation-notification-and-observation/
  • https://medium.com/@Alpaca iXSStudy/委任-通知-および-kvo-82 de 909 bd 29