我正在寻找从我的控制器访问简单模型对象(在MVC意义上)的方法。现在我在applicationDelegate中创建模型,并在创建控制器时将其传递给控制器。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Setup Model
DataModel *tempDataModel = [[DataModel alloc] init];
[self setDataModel:tempDataModel];
[tempDataModel release];
// Setup Controllers
Controller *rootController = [[Controller alloc] initWithModel:[self dataModel]];
UINavigationController *tempNavController = [[UINavigationController alloc] initWithRootViewController:rootController];
[self setNavController:tempNavController];
[rootController release];
[tempNavController release];
[window addSubview:[[self navController] view]];
[window makeKeyAndVisible];
return YES;
}
在控制器里面我有:
@property (nonatomic, retain)DataModel *dataModel;
和
- (id)initWithModel:(id)newModel {
self = [super init];
if(self) {
NSLog(@"%s", __PRETTY_FUNCTION__);
dataModel = [newModel retain];
}
return self;
}
- (void)dealloc {
NSLog(@"%s", __PRETTY_FUNCTION__);
[dataModel release];
[super dealloc];
}
这很好用,但我很好奇,如果在MVC和良好的设计方面这是好的。在之前的应用程序中,我有:
我非常感谢任何评论:
答案 0 :(得分:2)
我认为这是非常好的设计。允许控制器操纵模型,因此需要参考。我认为你当前注入Model实例的方法比单例方法要好。