我是Objective C的新手,这可能是一个a脚的问题,但:

我正在尝试制作一个iOS游戏,其中有一个“Monster”类,该类每秒生成一个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/

    10-09 08:52