在Objective-C中是否可以定义类属性?

3
要声明一个实例属性,您可以使用类似于以下内容的声明:
@property (readonly) int size;

该属性稍后可以使用点语法访问:
NSLog(@"The object has a size of: %d", objectInstance.size);

然而,我希望声明一个类属性,这样即使没有实例,也可以通过这种方式访问它。例如:

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

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

这种做法可行吗?

1个回答

3

简短的回答是不行,编译器不允许这样做。你可以看到,当苹果需要执行类似操作时(比如UIView隐式动画参数),他们使用KVC兼容的命名方式,但不将其声明为属性。

更长的答案是,类是对象,我确实可以想象一些相当丑陋的黑客攻击,涉及代理重定向,让您这样做,但这确实不是我推荐做的事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接