关于iOS游戏中模型变化的通知设计

时间:2012-04-08 06:39:59

标签: objective-c model-view-controller oop cocos2d-iphone

我正在开发一款类似流氓的游戏(iOS / Cocos2d)。我有一个类Map的对象,它有一堆GameObjects。

我有GameViewController类。当模型中的某些东西发生时(生物被杀死,玩家被移动,任何东西),我需要通知GameViewController这个变化。怎么做?

我看到两个选项:

  1. GameViewController实例可以是Map的委托,也可以是每个GameObject的委托。
  2. GameViewController将从Map和GameObjects中收听NSNotifications。
  3. 哪种方式更好?为什么呢?

1 个答案:

答案 0 :(得分:0)

Cocos是一个基于强单身的库,所以单例方法在Cocos游戏中很常见。但这并不意味着它是合乎逻辑的默认选择。

对于任何计划而言,您的第二种选择通常是更明智和更安全的方法,而不仅仅是科科斯。 NSNotifications允许您从其他对象通知对象,而不会陷入在程序中传递大量引用或单例的潜在错误状态。如果您可以通过一些通知实现目标,那么这就是您的目标。

如果您发现极端程度使用NSNotifications,例如每秒多次通知,那么您应该考虑通过指针在对象之间传递引用,或者将父类或主Cocos场景类创建为单例。

请记住,当你涉及单身人士时,虽然他们很容易实施,但滥用他们也同样容易。你不想养成让孩子们控制兄弟姐妹行为的习惯,因为他们可以轻松地访问父母和父母的方法。