我是 Objective C 的新手,这可能是一个有点蹩脚的问题,但是:
我正在尝试制作一个iOS游戏,其中有一个类“Monster”,它每秒左右生成一个新的Monster实例,我希望能够跟踪每个Monster以便使用/以某种方式操纵它。
目前我正在尝试为每个怪物颁发一个唯一的 ID,
例如这样的事情:
//Incorrect Syntax ...
Class Monster extends CCSprite
public static global_id = 0;
public instance_id;
init() {
instance_id = global_id;
global_id ++;
}
我如何在 Monster 类的头文件/实现文件中管理它? 在 Objective-C 中,“静态”似乎“不存在”。
最佳答案
您通常可以通过以下方式解决该问题:
- 坚持每个源文件一个类的规则;
- 在该文件中放置合适的全局变量;
- 将全局变量标记为
static
,在 C 语言中,这意味着“无法从该编译单元外部访问”(如果您不走出自己的编译单元,则一个源文件就是一个编译单元)与预处理器的方式)。
所以,界面:
@interface AEMonster: CCSprite
@property (nonatomic, readonly) int instanceID;
@end
实现:
static int globalID = 0;
@implementation AEMonster
- (instancetype)init
{
self = [super init];
if(self)
{
_instanceID = globalID;
globalID ++;
}
return self;
}
@end
关于ios - 在 Objective C 中使用静态变量来引用类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746991/