2016-09-06 1 views
0

私は概念の委任を学んでいます。私はその定義といくつかの例でどのように動作するのかを知っています。すべてのUIScrollViewDelegateメソッドをUIScrollViewに含めるとどうなりますか?

UIScrollViewにすべてのUIScrollViewDelegateメソッドを含めるとどうなりますか? UIScrollViewは、その代理人に情報を送信し、代理人の応答を待つのではなく、自分自身で動作させることができれば、それでも機能させることができます。

なぜ私たちはそうしないのですか? UIScrollViewが大規模になるからでしょうか?ほとんどの一般的なタスクを処理し、その代理人が他の小さなタスクを処理できるようにするために、UIScrollViewにしたいのですか?なぜこの方法が代表団よりも悪いのですか?

この質問は、一般的な質問に拡張することができます:iOSのコンテキストでの委任の動機は何ですか?

答えて

1

(この文脈で)委任の全体的なポイントは、起こっていることを他の人に知らせることです。スクロール・ビューは、すでにそれ自体について起こっているすべてを知っています。スクロールビューがデリゲートメソッドのいずれかを実装する理由はありません。デリゲートメソッドが利用可能なので、スクロールビューはデリゲートに特定のイベントを伝えることができます(オプション)。

より良い例はUITableViewです。デリゲートとデータソースがあります。データソースのポイントは、テーブルビューで表示するデータの量と量を決定できるようにするためです。そのデリゲートは、テーブルビューで発生しているさまざまなイベントについてデリゲートに通知します。テーブルビューがそれらのデータソースとデリゲートメソッドのすべてを実装するのは意味をなさないでしょう。要点は、テーブルビューは汎用であり、任意の量のデータを任意のコンテンツで表示できることです。何を表示するかの詳細を提供するデータソースです。

1

UIScrollViewは、普遍的であり、iOS開発中に頻繁に使用されます。スクロールは非常に簡単で、基本的にはどこでも同じように動作します。しかし、スクロールビューにあるビヘイビアを1か所に追加したい場合があります。たとえば、ユーザーがメイン画面でコンテンツをスクロールするたびに、コンソールにメッセージを出力したいとします。このロジックをUIScrollViewに追加したくないのは、この1つのスクロールビューをこのように動作させたいからです。デリゲートをUIScrollViewにアタッチできるようにすることで、他のscrollViewの動作を変更することなく、特定の動作を特定のscrollViewに注入できます。

関連する問題