我正在创建一个 iPhone 应用程序、一个游戏,并且我正在尝试理解和接受 MVC 架构。我计划创建一个模型,在这种情况下称为HighScoresModel
负责保存有关我游戏中高分的所有信息。
- 这个模型应该在哪里创建?在 AppDelegate 中?在第一个视图控制器中?
- 其他视图控制器应该如何访问模型以传递消息
addScore:withDifficulty:
?
我正在创建一个 iPhone 应用程序、一个游戏,并且我正在尝试理解和接受 MVC 架构。我计划创建一个模型,在这种情况下称为HighScoresModel
负责保存有关我游戏中高分的所有信息。
addScore:withDifficulty:
?我认为拥有一个类方法的最佳选择HighScoresModel
将从任何需要它的对象访问模型的单个共享实例。
这优于其他选项,因为没有控制器负责实例化模型,并且控制器也没有不必要地耦合到应用程序委托。
举个例子:
@interface HighScoresModel : NSObject
+ (HighScoresModel *)sharedHighScoresModel;
...
@end
@implementation HighScoresModel
static HighScoresModel *SharedHighScoresModel;
+ (HighScoresModel *)sharedHighScoresModel
{
if (!SharedHighScoresModel)
{
SharedHighScoresModel = [[HighScoresModel alloc] init];
}
return SharedHighScoresModel;
}
...
@end
希望这可以帮助!
创建一个 Singleton 并在其中创建 HighScoresModel。可以从所有 ViewController 访问单例。
至于传递消息的其他视图控制器,您将能够从控制器内的任何地方执行类似的操作。
[MySingleTon myHighScoresModel] addScore:myScore withDifficulty:myDifficulty];
有关单例的更多参考,请参阅以下链接http://www.johnwordsworth.com/2010/04/iphone-code-snippet-the-singleton-pattern/