[Swift] Delegation, Notification, KVO
3454 ワード
3つとも差が少ないように見えますが、違いは何ですか.それぞれの使い方には何が違いますか.
上記の問題で、私はこの文章を書くことにしました.
3つの方法があれば3つの理由があるのではないでしょうか.
すべてのオブジェクトに+コミュニケーション
上記2つの条件を満たすために,3つのモードが出現した.
コントローラは1つのビューに依存します.では、他のコントローラのビューは操作(またはコミュニケーション)できないのではないでしょうか.
でもやりたい.作りたかったので上の図案が出てきました
それぞれに存在し、必要なときだけ言いたい.
2021~30代が望む生活のようです.それぞれの生活だけど欲しい時に言いたいことは…?
ログインしました.すべてのUIを変更したいです.私はあなたのViewを操作できません.手伝ってください.
上記の場合、Delegationを使用することもできます.
(もちろん、ログイン時に多くのビューを変更する必要がある場合は別です.)
SWIFT公式文書は以下のように定義されている.
委任は、クラスまたは構造が::責任の一部::他のタイプのインスタンスに移行するか、または::委任:.この設計モードは、定義::プロトコル::によって委任された責任をカプセル化し、定義::実装:::を定義します.したがって、プロキシと呼ばれるフォーマットに従って委任された機能が提供されることを確認します.委任は、特定の操作に応答したり、ソースのデフォルトのタイプを知ったりすることなく、外部ソースからデータを取得するために使用できます.
(出典:https://docs.swift.org/swift-book/LanguageGuide/Protocols.html)
要するに、
::実装プレゼンテーション::目的::,ヘルプ実行::プロトコル:::手段:
実装方法または具体的な情報を再検討します.今日、このドキュメントは使用状況と目的のみについて作成します.
ではなぜDelegationを使うのでしょうか?
なぜなら、の利点 欠点
まさか私だけ...?
アプリケーションには
このオブジェクトは、イベントが発生していることを確認します.イベントが発生した場合(投稿された場合)、そのイベントを観察している観察者の動作方法が呼び出されます.
どうやってコミュニケーションしますか?
Notification Centerにアプリケーションを登録します.(ex.Aノード)
観察Aノードの観察者を登録します.(Aノードは最初のコントローラで観察された.)
Aノードを実行します.(post)(他のコントローラからAノードを呼び出す.)
では、最初のコントローラと別のコントローラとの間で通信が行われます.
たとえば、ログインに成功したとします.
次の長さのためです.の利点 欠点
これに対して、私たちは「多」(Da)で投稿します.
アップロードすると、ここにリンクを掛けます.
この文章の原作者
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
上記の問題で、私はこの文章を書くことにしました.
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
暫定結論を発表した.
しかし,開発経験や他のコードを学習した後,より明確な基準が得られる可能性がある.
などの基準が明確になってから文章を補充します!
参考資料
Reference
この問題について([Swift] Delegation, Notification, KVO), 我々は、より多くの情報をここで見つけました https://velog.io/@kipsong/Swift-Delegation-Notification-KVOテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol