为了良好的封装,体面的Objective-C程序员将私有ivars放在主实现文件中声明的私有扩展中,如下所示:
// MyClass.m @interface MyClass () { float value; } @end @implementation MyClass @end
但是最近,我发现一个更简单的隐藏私有ivars的方法:ivars可以在@implementation之后的{}块中声明,如下所示:
// MyClass.m @implementation MyClass { float value; } @end
这是非常方便的,没有私人的方法,但只有私人ivar需要隐藏.
但是,我不知道它的语法有效性.任何人都可以使用某些规范参考来验证或使其无效吗?
解决方法
这是完全有效的,这里是苹果公司谈论的文件:
我不会亲自使用它,因为我更喜欢类继承类的语法.