可以在Objective-C中定义一个类属性吗?

时间:2009-10-27 18:55:24

标签: objective-c properties

要声明实例属性,您可以使用类似于此的声明:

@property (readonly) int size;

稍后可以使用点语法访问该属性:

NSLog(@"The object has a size of: %d", objectInstance.size);

但是,我想声明一个类属性,这样即使没有实例,我也可以这种方式访问​​它。例如:

NSLog(@"%d instances have been created.", ClassName.numberOfInstances);

我知道我总是可以使用类消息来实现这种行为,并且仍然使用点语法调用它,但我更喜欢使用声明的属性,并且可以从某些属性的@synthesize指令中受益。

这可能吗?

1 个答案:

答案 0 :(得分:3)

简短的回答是,不,你不能。编译器不允许你这样做。你可以看到,当Apple必须做类似的事情时(比如UIView隐式动画参数),他们使用符合KVC标准的命令,不要将它们声明为属性。

更长的答案是类是对象,我实际上可以设想一些非常奇怪的黑客,它们涉及代理重定向,让你这样做,但它确实不是我建议做的事情。