代码之家  ›  专栏  ›  技术社区  ›  Stephen Furlani

样式:目标C和标记连接

  •  0
  • Stephen Furlani  · 技术社区  · 16 年前

    这是一个风格问题:

    因为苹果保留了“私有化”的关键词,所以我考虑了以下几点:

    #import <Cocoa/Cocoa.h>
    
    #define _(name) pvt_##name
    
    @interface SFMeasureViewController : NSViewController {
        @private
        NSTextField *_(label);
    
    }
    
    @property (retain) IBOutlet NSTextField *label;
    
    @end
    
    
    @implementation SFMeasureViewController
    
    @synthesize label = _(label);
    
    @end
    

    这有助于 [self label] 并使用 label 当涉及到保留和正确处理变量时。在这里,在代码中使用术语“label”会返回一个错误,迫使用户区分对self.label或uu(label)的调用。

    现在 _(label) 比标签多包含2个字符(该位置的移位字符)。外面还有什么好的约定吗? vLabel ?没有什么比这更清楚了 _label 但是由于它是保留的,我不想使用它。

    思想,评论?这是在工作中使用的样式指南,主要是在必要时使用ObjuleC++进行C++工作。

    谢谢,

    2 回复  |  直到 16 年前
        1
  •  0
  •   Community Mohan Dere    9 年前

    好吧,苹果建议不要使用 _ 作为任何东西的第一个字母,尤其是方法名。但是,例如变量,它们自己在样本代码中违背了这个原则。所以我想 _... 完全可以,不需要宏。我喜欢房子的名字 var 与支持实例变量 theVar 也是。更多信息,请参见讨论 here 在这样。

    在新的运行时中(即在Mac、iPhone OS或iPhone模拟器上为64位,启动Xcode 4附带的运行时),甚至不必显式声明支持实例变量;当 @synthesize 它,你不能直接访问那个ivar。因此,如果您只支持这些平台,那么这是最好的方法。

        2
  •  0
  •   Nickolay Olshevsky    16 年前

    实际上,在模块内部区分label/self.label并不困难,所以我认为在属性和字段使用相同的名称时没有任何问题。