【问题标题】:Underscore before property name, in setter [duplicate]属性名称前的下划线,在 setter [重复]
【发布时间】:2013-02-21 17:01:00
【问题描述】:

我写了一个setter方法——

- (void)setMyProp:(MyProp *)myProp{
    _myProp = myProp;
}

如何在属性名称工作前加上下划线? 我知道有人问过这个问题,但它们是关于用户将属性名称设置为 _myProp,一些约定。我没有合成或更改属性名称。这个下划线是如何工作的?

【问题讨论】:

标签: ios objective-c cocoa synthesize


【解决方案1】:

如果您使用的是最新版本的 LLVM,那么编译器会使用以下语法为您创建 @synthesize:

@synthesize myProp=_myProp;

因此,即使您没有显式合成,您也可以使用 _myprop。

*旁注:_myProp 使您可以直接访问该属性,而self.myProp 将调用访问器。始终使用self.myProp

【讨论】:

  • 您的附注不正确。使用 _myProp 直接访问 ivar。该属性根本不使用这种方式。
  • "Always" 也是错误的......你永远不会在 setter 本身中使用它,也不应该在引用文档的 init 方法中使用它;)
  • @rmaddy:我删掉了我的旁注。
  • @HAS:我删掉了我的旁注。
猜你喜欢
  • 2011-07-31
  • 2011-09-03
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 2011-07-24
  • 2010-11-05
  • 2014-04-14
相关资源
最近更新 更多