2012-04-08 4 views
2

Ich entwickle ein Schurken wie Spiel (iOS/Cocos2d). Ich habe ein Objekt der Klasse Map, das eine Reihe von GameObjects enthält.Design der Benachrichtigung über Modelländerungen in iOS-Spiel

Ich habe GameViewController Klasse. Wenn etwas im Modell passiert (Kreatur getötet, Spieler bewegt, irgendetwas), muss ich GameViewController über diese Änderungen informieren. Wie geht das?

Ich sehe zwei Möglichkeiten:

  1. GameViewController Instanz ein Delegierter von Karte und ein Delegierter jeden Gameobject sein könnte.
  2. GameViewController wird NSNotifications von Map und GameObjects hören.

Welcher Weg ist besser? Warum?

+0

Muss GameViewController über jedes GameObject wissen? Die Map enthält die GameObjects, so dass sie sie beobachten können (als Delegierter von, Abhören von Benachrichtigungen oder als Zeiger auf sich selbst zu den GameObjects) und diese wiederum an die GameViewController-Klasse weiterleiten (wiederum mit einem dieser drei) Techniken). – Dondragmer

Antwort

0

Cocos ist eine stark Singleton-basierte Bibliothek, daher ist die Singleton-Methode in Cocos-Spielen durchaus üblich. Das bedeutet jedoch nicht, dass es sich um die logische Standardwahl handelt.

Ihre zweite Option ist in der Regel ein weiser und sicherer Ansatz für jedes Programm, nicht nur Cocos. NSNotifications ermöglichen es Ihnen, Objekte von anderen Objekten zu benachrichtigen, ohne in einen möglicherweise fehlerhaften Zustand zu geraten, indem Sie zahlreiche Referenzen oder Singletons in Ihrem Programm weitergeben. Wenn Sie Ihre Ziele mit ein paar Benachrichtigungen erreichen können, ist dies der richtige Weg.

Wenn Sie feststellen, dass Sie extrem NSNotifications verwenden, wie mehrere Benachrichtigungen pro Sekunde, sollten Sie entweder Verweise zwischen Ihren Objekten über Zeiger übergeben oder Ihre Elternklasse oder Haupt-Cocos-Szenenklasse als Singleton erstellen.

Denken Sie daran, dass wenn Sie Singletons bekommen, obwohl sie einfach zu implementieren sind, es genauso leicht ist, sie zu missbrauchen. Sie möchten sich nicht daran gewöhnen, dass Kinderklassen das Verhalten ihrer Geschwister steuern, nur weil sie leicht auf die Eltern- und Elternmethoden zugreifen können.

Verwandte Themen