どちらのタイプのオブジェクトも多かれ少なかれ同じように動作します。それはそれらが何をするかという問題です。
デリゲート型オブジェクトは、別のオブジェクトが実行するアクションに応答します。たとえば、プロトコルには、ユーザーがテーブル内の特定の行を選択したときにアクションを実行UITableViewDelegate
するなどのメソッドがあります。didSelectRowAtIndexPath
一方、データソースタイプのオブジェクトは別のオブジェクトにデータを提供します。たとえば、UITableViewDataSource
プロトコルには、テーブルに何を表示するかなどcellForRowAtIndexPath
のメソッドがあります。numberOfRowsInSection
コンパイルに関しては、この2つに大きな違いはありません。これは、コードのユーザーにとってどのオブジェクトが何を実行するかを明確にするためのコーディングスタイルにすぎません。
編集:
2番目の質問に答えるには、各アラートの応答を変えたい場合は、アラートごとに異なるデリゲートを作成する必要があります。たとえば、アラートの1つが保存確認アラートである場合(おそらくファイルを上書きしようとしていて、ユーザーが何をしたいかを確認するためにポップアップ表示されます)、次のようなオブジェクトがあります。
@interface SaveConfirmAlertDelegate : NSObject<UIAlertViewDelegate>
@end
また、ユーザーがアラートで押したボタンに応じて、適切な保存機能を実装します @implementation
。SaveConfirmAlertDelegate
アラートビューを作成するときは、デリゲートオブジェクトを指定します。これは、である必要はありませんself
。4人の代理人を異なるオブジェクトとして保存し、必要に応じてアラートに設定することができます。
これで問題が解決することを願っています