代码之家  ›  专栏  ›  技术社区  ›  Phil

在Objective-C中隐藏私人信息的位置[重复]

  •  5
  • Phil  · 技术社区  · 11 年前

    关于私有实例变量应该在哪里声明以及为什么声明,约定/规则/偏好/命令是什么?

    // someClass.h
    
    @interface someClass : NSObject {
    @private
    // Here in the class declaration?
    }
    // ...
    @end
    
    // someClass.m
    
    @interface someClass () {
    // Here in the class extension? This seems to be obj-c's version
    // of the C++ Pimpl idiom.
    }
    @end
    
    @implementation someClass {
    // Here in the class definition? BTW, what's the default scope here?
    // Seems like it should be @private. I haven't been able to find much
    // documentation about this declaration block.
    }
    // ...
    @end
    

    有人能评论这三个部分的适当使用吗?或者指出一个好的网络资源吗?谢谢

    1 回复  |  直到 11 年前
        1
  •  4
  •   Nikolai Ruhe    11 年前

    今天,最好的做法是把它们放在 @implementation 或者在(非公共的)类扩展中。

    Ivar对类的客户机从来都不感兴趣,因此它们不应该在公共API(头部)中可见。

    将它们放在@实现或类扩展中并没有太大区别。为了保持一致性,我总是把它们放在@实现中。