2012-03-22 5 views
-1

私はXcodeを始めようとしていて、一般的にはOOPの経験がありますが、大部分はスクリプトに慣れています。 Anyhoo、私は客観的なCとxcodeのいくつかのコンセプトを手に入れようとしています。xCode/Objective-C解剖学的類推 - Noobの助けを借りてください

まずは、代理人とプロトコルが何をしているのか理解できていません。誰かが郵便配達員、教師、工場、または何かの単純な類推でこれを説明できると便利だと思います。私は、デリゲートのメソッドと通常のクラスメソッドの違いを理解していません。

私にはクラス郵便配達員がいます。今すぐpostmanには、sortMail()メソッドとdeleteMail()メソッドがあります。デリゲートメソッドの例デリゲートを使用する場合、データはどこに返されますか?デリゲートの中に?デリゲートをインスタンス化してから結果を読み取る必要があるのですか、デリゲートが結果を呼び出しオブジェクトに返すのでしょうか?プロトコルはどこに入りますか...

簡単な例をお願いします。

+1

ここまでで、どのような文献を読んだことがありますか? – MrMage

+0

私はios5アプリケーション開発の本を持っています。私はおそらくイントロxcode本を買うべきだと思う。 – JoshDG

+1

代表者とプロトコルはXcodeとは関係ありませんが、目的Cには関連していません。 – MrMage

答えて

3

プロトコルと代議員は頻繁に一緒に行きます。プロトコルが最初に何であるかを理解するのに役立ちます。

プロトコル

プロトコルは、メソッドの標準セットを実装するクラスの約束を有する方法です。

例:認定された電気技師には、認定されたすべての電気技師が持つスキルがあります。認定された電気技師が行うことが認可された何かをする必要がある場合、認定された電気技師はそれを行うことができます(少なくとも理論上)。

委任

今、デリゲートは、一定の要件を満たすために責任を与えられているオブジェクトです。 1つのオブジェクトに別のオブジェクトの必要性を満たす責任を与えることができます。

例:家を建てるときには、家に電線などを通す必要があります。この責任は認定された電気技師に与えられており、認定されている(つまり特定のプロトコルを実装している)

はココアコンテキストですべて一緒にそれを置く:

UITableViewはそれがそれらを表示することができますので、付属の細胞が必要です。セルを供給するためには、UITableViewDataSourceプロトコルを実装するクラスを作成(または少なくとも指定)する必要があります。これにより、クラスが、必要なセルをUITableViewに供給するために必要なことを行うことが保証されます。

のでUITableView代表者オブジェクトが必要な細胞を供給する方法を知っていることを保証プロトコルを実装して、特定のクラスオブジェクトに細胞を提供する責任。 「Bオブジェクトに委譲特定の機能オブジェクト」のよう -

Example

+0

パーフェクト!私は実世界の例が必要でした。今私はそれを適用する方法を把握する必要があります!ありがとう! – JoshDG

+0

ここの例:http://www.mobisoftinfotech.com/blog/iphone/introduction-to-table-view/ – mydogisbox

+0

実際には、プロトコルを実装するクラスは、特に '@ optional'と指定されている場合は、メソッドを実装することを約束しません。 – FreeAsInBeer

1

デリゲートは、別のオブジェクトの特定の機能を処理するオブジェクトです。

たとえば、AppleのクラスNSURLConnectionのインスタンスを使用してWebサービスをリクエストすることができますが、アップルのコードでは、ダウンロードするデータの処理方法がわからないため、代理オブジェクトを使用してその機能。 NSURLConnectionは、ダウンロードしたデータを処理するような処理が必要なときにメッセージを渡すことで、その機能をオブジェクトに委譲します。

もう1つの例は、テーブルビューです。 Appleはテーブルビューを表示し、それらとのやりとりを処理するために多くのコードを書いていますが、表示したいデータや、誰かがそれとやり取りするときにそのデータで何をする必要があるのか​​はわかりません。だから、あなたはこれらの事のためのデリゲートオブジェクトを提供することができます。テーブルビューは、表示するデータを知る必要があるときに、デリゲートにデータを取得するように要求します。ユーザーがアイテムを選択すると、デリゲートにアイテムの処理を依頼します。

プロトコルは、デリゲートがどのようなメッセージを理解しているのかを単に説明する方法です。非公式のプロトコル(ここではマニュアルで説明されている)と正式なプロトコル(ヘッダーファイルで定義されています)があります。

関連する問題