最近まで、自作デリゲートの使い方がいまいちイメージできていませんでしたが、少しずつ理解できてきましたので、デリゲートについて備忘録を残します。
デリゲートを自作で用意
MVCモデルでのクラス分けを勉強するうちに、「他のクラスへの完了通知」みたいなものが必要な場面が出てきたので、その際にデリゲートを使ってみました。
結論から言うと、
「特定のタイミングで、あるクラスのメソッドから別のクラスのメソッドを呼びたいとき」
に使うと便利でした。
任意のタイミングで必要メソッドを呼ぶことができるため、便利だと素直に思いました。
知らなくて困ったこと
具体的に、以下の場面で困りました。
Modelクラスで、データを保存した後などにControllerクラスのテーブルビューのreloadメソッドを呼べなかった。
そこで、デリゲートを作り、任意のタイミングで他クラス(Controllerクラス)のreloadメソッドを呼んでみた。
実際の使用例
/// デリゲートオブジェクト、メソッドの作成
/// DataModel.h
@protocol DataModelDelegate <NSObject>
- (void)loadData;
@end
/// 他クラスから呼び出したい処理内容を用意
/// ViewController.h
- (void)loadData {
[self.tableView reloadData];
}
その他必要な用意
処理内容を記載するクラスに
<DataModelDelegate>
を準拠し、
DataModel *dataModel = [[DataModel alloc] init];
dataModel.delegate = self;
としておく。
まとめ
自作デリゲートの使用に関する知識はまだまだ少ないので、また別の機会に記事にしようと思います。