我想在课程之外使用课程变量。
通过'外部',我是指实例化该类的主要功能。
@interface Class: NSObject
static int var_class; // Class variable
{
int var_object; // Object variable
}
@end
@implementation Class
@end
为了访问对象变量var_object
,我们使用:
int main(void)
{
Class *object = [Class new];
// Access to the variable
object->var_object;
(*object).var_object;
return 0;
}
我以为我可以用相同的方式访问类变量var_class
。
但是他们都没有工作。 (无法编译)
Class.var_class;
// -> Generates error: could not find setter/getter for 'count' in class 'TheClass'
Class->var_class;
// -> Generates error: error: expected '.' before '->' token
如何获取/设置类变量的值?
声明函数是访问类变量的方法,但我希望它更简单。
@interface Class: NSObject
static int var_class; // Class variable
+(int) get;
+(void) set: (int) val;
@end
@implementation Class
+(int) get
{
return var_class;
}
+(int) set: (int) val
{
var_class = val;
}
@end
Objective-C中没有静态类变量,因此您不能期望像Class.var_class
这样的东西。这就是为什么您的最后一个主张是正确的并且被普遍采用的原因。参见Does Objective-C support class variables?。