0

我正在创建一个 iPhone 应用程序、一个游戏,并且我正在尝试理解和接受 MVC 架构。我计划创建一个模型,在这种情况下称为HighScoresModel负责保存有关我游戏中高分的所有信息。

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

2 回答 2

1

我认为拥有一个类方法的最佳选择HighScoresModel将从任何需要它的对象访问模型的单个共享实例。

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

举个例子:

@interface HighScoresModel : NSObject

+ (HighScoresModel *)sharedHighScoresModel;
...

@end

@implementation HighScoresModel

static HighScoresModel *SharedHighScoresModel;

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

    return SharedHighScoresModel;
}

...

@end

希望这可以帮助!

于 2012-08-28T21:54:24.957 回答
0

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

至于传递消息的其他视图控制器,您将能够从控制器内的任何地方执行类似的操作。

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

有关单例的更多参考,请参阅以下链接http://www.johnwordsworth.com/2010/04/iphone-code-snippet-the-singleton-pattern/

于 2012-08-28T21:56:49.340 回答