从viewcontrollers访问模型?

时间:2012-08-28 21:52:01

标签: iphone ios model-view-controller uiviewcontroller model

我正在创建一个iPhone应用程序,一个游戏,我正在努力理解并拥抱MVC架构。我打算创建一个名为HighScoresModel的模型,负责保存游戏中有关高分的所有信息。

  1. 这个模型应该在哪里创建?在AppDelegate?在第一个视图控制器?
  2. 其他视图控制器应如何访问模型以传递addScore:withDifficulty:
  3. 等消息

2 个答案:

答案 0 :(得分:1)

我认为在HighScoresModel上使用类方法的最佳选择是从任何需要它的对象访问模型的单个共享实例。

这优于其他选项,因为没有控制器负责实例化模型,控制器也不会不必要地耦合到应用程序委托。

举个例子:

@interface HighScoresModel : NSObject

+ (HighScoresModel *)sharedHighScoresModel;
...

@end

@implementation HighScoresModel

static HighScoresModel *SharedHighScoresModel;

+ (HighScoresModel *)sharedHighScoresModel
{
    if (!SharedHighScoresModel)
    {
        SharedHighScoresModel = [[HighScoresModel alloc] init];
    }

    return SharedHighScoresModel;
}

...

@end

希望这有帮助!

答案 1 :(得分:0)

创建一个Singleton并在那里创建HighScoresModel。可以从所有ViewController访问单例。

就其他视图控制器传递消息而言,您将能够在控制器内的任何位置执行类似的操作。

[MySingleTon myHighScoresModel] addScore:myScore withDifficulty:myDifficulty];

有关单身http://www.johnwordsworth.com/2010/04/iphone-code-snippet-the-singleton-pattern/

的更多参考,请参阅以下链接