iOS - Clarifying class and instance methods
我只是想确保我正确地使用类方法。
举例来说,假设我正在创建一个游戏,其中包含一个地图和该地图上的各个图块(例如,16 x 16图块)。
每一块瓷砖都可以由建筑物、树木、道路等组成,这在整个游戏中都可以改变。
我是否正确地用类方法设置一个映射类来初始化映射,仅仅是因为只有一个映射,我不需要实例化多个映射?
我是否也可以用实例方法设置一个tile类来初始化tiles,因为每个tiles都有256个属性?
我努力想把这一切都解决掉,任何建议都会非常感谢。
处理这个问题有多种模式,但基本上可以归结为
在Objective-C中处理单例的一个简单方法是创建一个类方法来实例化它,即:
1 2 3 4 5 | static Map* defaultMap = nil; + (Map*) defaultMap { if(!defaultMap) defaultMap = [[Map alloc] init]; return defaultMap; } |
对映射使用类方法可能不是一个好主意,就像全局变量通常应该减少到最小值一样(尽管上面的示例实际上是一个全局变量,但是一旦需要多个映射,重构代码就会容易得多)。
映射类可以实现为单例模式。或者任何其他限制它仅限于1个共享实例的方法。