3

私のアプリには、2 つのシーンを含むストーリーボードがあります。最初のものは Summary-View-Controller で、いくつかのデータを表示するだけです。ただし、それをタップして、変更を加えることができる Edit-View-Controller シーンに切り替えることができます。変更を Summary-View-Controller に報告するために、Edit-View-Controller は親への参照を取得します。編集が完了すると、Parent-View-Controller でメソッドを呼び出します。

Edit-View-Controller のプロパティは次のようになります。

@property (weak, nonatomic) id <NameEditViewChangedProtocol> parentController;

私のアプリは正常に動作します。それは私の問題ではありません。しかし、多くのチュートリアルでは、このようなプロパティは単にdelegateと呼ばれています。

@property (weak, nonatomic) id <NameEditViewChangedProtocol> delegate;

委譲とは何か、どのように機能するかは知っていますが、parentControllerはより意味のある名前です。delegate、それは何でもかまいません。だから私の質問は: このデリゲートのようなプロパティを呼び出す必要があるのはいつですか? この名前の使い方にルールはありますか?

4

3 に答える 3

3

通常、タイプのプロパティの名前id<some protocol>はプロトコル名の最後の部分と同じです。たとえば、UITableViewの「delegate」プロパティはタイプのプロパティでid<UITableViewDelegate>あり、「dataSource」プロパティはタイプid<UITableViewDataSource>です。プロトコルに目的で名前を付ける場合、タイプのプロパティの名前はid<some protocol>、プロトコル名から自然に取得する必要があります。価値があるので、プロトコル名には通常「プロトコル」という単語は含まれていません。

プロパティに名前を付ける方法についてのAndrewの回答は、私が説明したプロトコル/プロパティ名の対応に従う場合、プロトコルのより良い名前を作成するのにも役立ちます。

編集:フォーマットの破棄を修正<protocol names>

于 2013-03-06T21:32:47.783 に答える
3

委任とは何か、どのように機能するかは知っていますが、私にとっては、parentControllerの方が意味のある名前です。デリゲート、それは何でもかまいません。

ここであなた自身の質問に答えたと思います。デリゲートは、デリゲートクラスに関する限り、「何でもかまいません」というヘルパーオブジェクトです。parentControllerという名前は、2つのオブジェクト間の関係について特定の何かを想定しています。その関係が常に存在することがわかっている場合は、その名前を使用するのが適切です。一方、2つのオブジェクトがたまたまその関係を持っているだけで、一方のオブジェクトがもう一方のオブジェクトをヘルパーとして使用しているという事実にとって関係が重要でない場合は、デリゲート(または同様のもの)を使用します。

それで、問題のオブジェクトは親子関係を持っている必要がありますか?parentViewController親であるという理由だけでメッセージを送信していますか?または、他のオブジェクトが同じメッセージに応答する可能性があると考えられますか?

于 2013-03-06T21:50:20.207 に答える
2

編集ビュー コントローラーの動作方法、またはイベントや受信データなどの通知を実行時に決定するために使用される場合は、デリゲートと呼びます。編集ビュー コントローラーが複数で再利用される場合は、デリゲートと呼びます。デリゲートのクラスは何でもかまいません (デリゲート プロトコルに準拠している可能性があります)。

2 つの間の関係が、より抽象的なデリゲート関係ではなく、常に親が子を「所有」する親子関係になることがわかっている場合は、parentController と呼ぶのが理にかなっています。

于 2013-03-06T21:27:45.797 に答える