什么时候在实例变量前加下划线

我已经在Apple的UIPickerView.h中看到了这一点:


id<UIPickerViewDataSource> _dataSource;

为什么在那里强调?它有特殊含义吗?我必须了解的公约?


开心每一天1111
浏览 419回答 3
3回答

慕雪6442864

许多人将其用于私有变量,以区分对象中的私有变量和公共变量。这是一种完全可选的工作方式。

MMMHUHU

您所看到的是使用下划线来区分实例变量和属性。因此,一个类声明可能是:@interface Foo {&nbsp; NSString* _label;&nbsp; ....}@property (nonatomic, retain) NSString* label; // notice: no underline然后,在实现文件中,您将拥有:@synthesize label=_label; // the property is matched with the ivar现在,在实现内部,如果您想直接访问实例变量,则可以使用,_label而要使用属性访问器方法(该方法负责保留/释放以及其他一系列簿记任务)self.label。从外面看,您总是想要穿过该{object}.label物业。另一种方法是不带下划线而仅使用:NSString* label;@property (nonatomic, retain) NSString* label;...@synthesize label;它的工作原理相同,但那么它可能会混淆的人读的代码,并试图跟踪labelVS self.label。我个人觉得Apple约定(带下划线)更容易阅读,但这是优先选择的问题。

回首忆惘然

正如人们已经说过的_someVar曾经说过,变量是私有的。这是一个简单的约定,并不重要。另一个用途是,在C中使用Wayback机器旅行时,_function()表示该功能不是平台可移植的,而__function()则表示该功能不是编译器可移植的。因此,在标准C库中,有时会看到名称前带有_或__的变量,这就是这些函数所代表的含义。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS