web-dev-qa-db-ja.com

iOS Swift:Closures(Callbacks)vs Delegates、どちらを使用するのか?

個人的には、Swiftは単純な論理相関のためにデリゲートよりもコールバックを好みます。なぜなら、それは非常に単純で理解しやすいからです。同時に、デリゲートを好む人もいます。 C#などの言語。

オンラインで見つけた議論がいくつかあります。

1。 「Swiftでデリゲートを使用しない理由」https://medium.cobeisfresh.com/why-you-shouldn-t-use-delegates-in-Swift -7ef808a7f16b#.hqb7zrc1v

2。 Appleはコールバックパターンに焦点を移していますhttps://www.reddit.com/r/Swift/comments/2ces1q/ closures_vs_delegates /

3。ブロックまたはデリゲート?http://blog.stablekernel.com/blocks-or-delegates/

これらの議論を読んだ後、私はまだ好みについて未定です。いつクロージャーを使用するのが良いのか、いつデリゲートを使用するのが良いのかを知りたいですか?と理由?

ありがとう!

20
RainCast

(意見に基づく質問に対する意見に基づく回答)

質問はどちらが優れているべきではなく、私が解決しようとしている問題に対する最善の解決策である必要があります。

私の簡単なルール:インターフェースとして何かが1つの機能を必要とする場合、通常はコールバックが良い解決策です。複数の機能が必要な場合、特にオブジェクトの基本機能に必要な場合は、おそらくデリゲートがより良いソリューションです。

いつものように、それは特定の状況に依存しますが、実際の使用法では絶対的なステートメントはほとんど動作しません。

27
PeejWeej