@protocolをModelクラスに追加し、それをControllerに実装するのは良いパターンですか?
これは、モデルデータが変更されたときにUITableViewをリロードするためのメッセージを送信するために使用するコードです。これは、オブジェクトcコーディングに適したアプローチですか?:
MyModel.h
@protocol myModelDelegate
{
(void) refreshTableView:(id) sender;
}
@end
@interface MyModel
{
@property (nonatomic,strong) (NSArray *) myData;
@property (nonatomic,weak) (id) <myModelDelegate> delegate;
}
@end
MyModel.m
@implementation MyModel
@synthesize myData=_myData;
- (NSArray*) myData {
if(!_myData) {
_myData= [[NSArray alloc] init];
}
return _myData;
}
- (void) setMyData: (NSArray*) myData
{
if (_myData != myData) {
_myData=myData;
[delegate refreshTableView:self];
}
}
@end
myDataController.h
...
@interface MyDataController: UITableViewController <myModelDelegate>
...
myDataController.m
@interface MyDataController()
@property (nonatomic,strong) (MyModel *) model;
@end
@implementation MyDataController
@synthesize model=_model;
-(MyModel *) model
{
if(!_model)
{
_model=[[MyModel alloc]init];
model.delegate=self;
}
return _model;
}
...
- (void) refreshTableView: (id) sender
{
[TableView reloadData];
}
...
@end