objective-c - 应将各种变量和方法类型放在 header 中的位置

标签 objective-c variables compiler-errors declaration header-files

我注意到,如果我将某些声明放在头文件的某些位置,则会出现编译错误。我已经在代码中添加了关于我认为某些事情的去向的注释;他们是正确的吗?

@interface Level : CCNode { 
    //Instance variables?
    PlayBackgroundLayer* playBGLayer;
    PlayUILayer* playUILayer;
    PlayElementLayer* playElementLayer;
}

//Static methods?
+(void) InitLevel: (int) levelNumber;
+(Level*) GetCurrentLevel;

//Property declarations for instance variables?
@property (nonatomic, retain) PlayBackgroundLayer* playBGLayer;
@end

//Static variables?
Level* currentLevel;
PlayTilemapLayer* playTilemapLayer;

最佳答案

你在所有方面都是正确的,除了一个。您的最后一个变量不是静态变量,它们是全局变量。静态变量只是用 static 关键字声明的变量,它们的含义与其他语言略有不同。它们不是类变量,它们是仅对声明它们的文件可见的变量,并且只有在声明它的范围内才可见(如果您在函数中声明它,其他函数将看不到它)。但是,正如您所料,无论您有多少实例,它们都只声明一次。如果您在接口(interface)之外声明某些内容而没有像您所做的那样使用 static 关键字,其他类将导入它们。但是,这不是实现此目的的理想方法(如果多个类导入此 header ,您可能会遇到重新定义错误)。

另外,需要注意的是,属性不需要有明确的支持变量(如果您使用 @synthesize 关键字,编译器将为您创建一个),但当然,如果您想要一个,它没有任何问题。

最后,您应该注意,您的静态方法类方法不是实例方法的唯一原因是因为它们以 开头。加号 (+) 字符而不是 减号 (-) 特点。

关于objective-c - 应将各种变量和方法类型放在 header 中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11007057/

相关文章:

objective-c - 带有 UIButtons 的 UIScrollview - 如何重新创建跳板?

javascript - 在 Jade 中使用外部变量

java - 最终静态变量及其使用

java - 错误: Could not find or load main class shoutbox.ShoutBox

c++ - 在 Eclipse 中使用 Botan 库

objective-c - 为什么在我的 Objective-C 代码中间接调用时此 C 数组为 NULL? (cocos2d)

ios - 通过滑动从 UItextView 中选择文本

variables - 时间扭曲变量初始化?

Java 有界泛型 : Type inference bug?(方法调用,JLS 15.12.2.7)

ios - 如何在类扩展中添加静态(存储)属性以创建单例? ( swift )