在简单的应用中将模型链接到控制器?

时间:2010-12-08 13:41:56

标签: iphone objective-c cocoa-touch

我正在寻找从我的控制器访问简单模型对象(在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和良好的设计方面这是好的。在之前的应用程序中,我有:

  1. 使用共享实例(Singleton)
  2. 从控制器内部创建模型。
  3. 我非常感谢任何评论:

1 个答案:

答案 0 :(得分:2)

我认为这是非常好的设计。允许控制器操纵模型,因此需要参考。我认为你当前注入Model实例的方法比单例方法要好。