2010-12-08 32 views
2

我只是想方設法從我的控制器訪問一個簡單的模型對象(在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. 使用
  2. 創建的模型從控制器內的共享實例(辛格爾頓)。

任何評論都將我非常讚賞:

回答

2

我覺得這是非常好的設計。控制器被允許操縱模型,所以需要參考這個。我認爲你注入Model實例的當前方式比單例方式更好。

相關問題