代码之家  ›  专栏  ›  技术社区  ›  Ben S

是否可以在objective-c中定义类属性?[复制品]

  •  3
  • Ben S  · 技术社区  · 15 年前

    这个问题已经有了答案:

    要声明实例属性,可以使用类似于以下内容的声明:

    @property (readonly) int size;
    

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

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

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

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

    我知道我可以始终使用类消息实现此行为,并使用点语法调用它,但我更希望有一个声明的属性,并将受益于 @synthesize 一些属性的指令。

    这可能吗?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Louis Gerbarg    15 年前

    简短的回答是不,你不能。编译器不会让你这么做的。您可以看到,当苹果不得不做类似的事情(比如uiview隐式动画参数)时,它们使用kvc兼容的命名put,而不是将它们声明为属性。

    更长的答案是类是对象,事实上我可以想象一些相当怪异的黑客,其中涉及代理重定向,让你做,但这真的不是我建议做的事情。