iOS SWIFT:クローズ(コールバック)対デリゲートは、いつ使用するか? [閉まっている] -- ios フィールド と swift フィールド と callback フィールド と delegates フィールド と closures フィールド 関連 問題

iOS Swift: Closures (Callbacks) versus Delegates, when to use which? [closed]












22
vote

問題

日本語

この質問を改善したいですか?この記事を編集することで事実と引用と答えることができるように質問を更新します。

閉じられた 4年前

この質問を改善します

個人的に私は単純な論理的相関のためのスウィフトでの委任中のコールバックを好み、それはかなり前方で理解しやすいからです。同時に、代表団はC#のような他の言語で人気のあるパターンであるため、代表団は代表者を好む。

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

1。 「スウィフトで代理人を使用しないのですか?」 https://medium.cobeisfresh。 COM / WHINE-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/ これらの議論を読んだ後、私はまだ好みに未定です。 いつクローズを使用する方が良いかどうかを知りたいのですが、Delegatesを使用する方が良いのですか?そして理由?

ありがとう!

英語

Personally I prefer callback over delegate in Swift for simple logical correlations, because it's pretty straight-forward and easy to understand. At the same time, some prefers delegate, since delegation is a popular pattern in other languages, such as C#.

There are some discussions I found online:

1. "Why you shouldn't use delegates in Swift?" https://medium.cobeisfresh.com/why-you-shouldn-t-use-delegates-in-swift-7ef808a7f16b#.hqb7zrc1v

2. Apple is shifting its focus more on the callback pattern https://www.reddit.com/r/swift/comments/2ces1q/closures_vs_delegates/

3. blocks or delegates? http://blog.stablekernel.com/blocks-or-delegates/

After reading these discussions, I am still undecided on the preference. I would like to know when is better to use closures and when is better to use delegates? and reasons?

Thanks!

</div
              
   
   

回答リスト

31
 
vote

(意見ベースの質問に対する意見に基づく答え)

質問はどちらが良いかどうか、それは私が解決しようとしている問題に対する最善の解決策であるべきです。

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

常にそれは特定の状況に依存しますが、絶対文は実際の使用法ではうまくいくことはめったにありません。

 

(Opinion based answer for an opinion based question)

The questions shouldn't be which is better, it should be what's the best solution for the problem I'm trying to solve.

My simple rule: if something requires one function as it's interface, a callback is usually a good solution. If more than one function is required, especially when they're required for the basic function of an object, a Delegate is probably a better solution.

As always it depends on the specific situation, but absolute statements rarely work out in real-world usage.

</div
 
 
 
 

関連する質問

1  PowerShell ScriptBlockの範囲を制御する方法  ( How to control the scope of a powershell scriptblock ) 
PowerShellに書かれた機能を持っています: <事前> <コード> function replace([string] $name,[scriptblock] $action) { Write-Host "Replacing $name" ...

25  デリゲートを持つローカル変数  ( Local variables with delegates ) 
このは明らかにがそれがベストプラクティスではないように見えるように見えます。誰かがそれがベストプラクティスではないのか、あるいはこれがどのように機能するかを説明できますか?説明を提供する本や記事が理解されよう。 <事前> <コード> //The constru...

86  関数ポインタ、クロージャ、およびラムダ  ( Function pointers closures and lambda ) 
関数ポインタについて学んでいるだけで、私はK&AMPを読んでいるように、主題についてのRの章である。私を襲った最初のことは、「ねえ、これは閉鎖のようなちょっとです」。私はこの仮定が何らかの経過、検索の後で、この比較のどの分析を見つけられなかったかについて、この...

5  Cプログラマーとしてクロージャ(またはブロック)を使用して設計を使用する方法  ( Ways to use design using closures or blocks as a c programmer ) 
私の2つの主な開発環境はC、およびObjective-Cです。 CLANGとLLVMを使用すると、クロージャを使用してブロックと呼ばれる完全な現実になりつつありますが、それらはまだクロージャーしています。私は技術的な「方法」に関係していません 私が知りたいこと...

0  長い要求が完了したときに検出する引数として渡される完了ハンドラを使用する方法はありますか  ( Is there a way of using a completion handler passed through as an argument to de ) 
パラメータとして関数を渡すときに完了したイベントを処理するためにクロージャを使用する方法を理解するのに問題があります。 これは非常に物理的な例です: <事前> <コード> XP0 XP1 が終了したときに見つけたい(たとえば、ネットワーク要求のようなもの...

9  JavaScript Closures  ( Javascript closures ) 
JavaScriptの閉鎖の概念とはまだ混乱しています。閉鎖が母親関数が返された後にその母親関数内で作成された変数にアクセスするための内部関数の能力であるという点を取得します。 しかし、関数内に変数を作成することができたら、ローカル変数を保護するための内部関...

0  インクリメントボタンMitrilコンポーネント構成で別々にクリックします  ( Increment button clicks separately in mithril component composition ) 
私はMithril.jsでコンポーネントがどのように構成されているかによって混乱しています。以下の例では、ボタンクリック数のプライベートカウントを保つボタンコンポーネントを作成します。 2つのそのようなコンポーネント(下のボタン1と2)を2つのマウントポイント...

5  Groovy閉鎖パラメータ  ( Groovy closure parameters ) 
Grails Mail Pluginが提供するSendmailメソッドを使用する例は、この本に表示されます。 <事前> <コード> sendMail { to "foo@example.org" subject "Registration...

82  PHPのクロージャ...何、正確に、彼らはそれらを使用する必要があるのですか?  ( Closures in php what precisely are they and when would you need to use them ) 
だから私は最新の、オブジェクト指向ファッションに沿ってプログラミングしています。私はPHPが実装するOOPのさまざまな側面を定期的に利用していますが、いつ閉鎖を使用する必要があるか疑問に思います。それが閉鎖を実装するのに役立つときにいくつかの光を小さくすること...

25  ActionScript 3でクロージャの問題を修正する方法(AS3)  ( How to fix closure problem in actionscript 3 as3 ) 
下のコードでは、いくつかの画像をロードし、それらが個別にロードされるとすぐにそれらをステージに入れようとしています。しかし、最後の画像だけが表示されているのでバグが鳴っています。私はそれが閉鎖問題であると思われます。どうすればいいですか? AS3のクロージャー...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有