在ViewController.m中,self.username 和 _username 有什么区别


@synthesize username = _username;
//Method1
- (void) viewDidLoad
{
self.username = @"admin";
}
//Method2
- (void) viewDidLoad
{
_username = @"admin"
}

两者都有效,有什么区别?
我可以使用_username吗?当我使用self.username时,它会@synthesize用户名;
self.username 是一个方法吗?_username只是一个变量?

我用几种方法编写_username。它也可以在视图中工作。 self.username 是否比 _username 快?

self.username将调用username的 setter,这就是断点跳转到synthesize语句的原因。

当您_variable时,可以使用_variable访问该属性。 在您的情况下:

self.username将值存储到 ivar_username_username = @"admin";还将值存储到 ivar_username。意味着两者都保存到同一个 ivar_username.

示例 4-2 使用 @synthesize 您可以使用 property=ivar 形式来指示特定的 实例变量应用于属性,例如:

@synthesize名字,姓氏,年龄=岁;

这指定了名字、姓氏和 年龄应综合,财产年龄由 实例变量年份。合成的其他方面 方法由可选属性确定

请参考 http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/chapters/ocproperties.html

我建议您浏览苹果文档 - 声明的属性。self.username等效于其他语言中的 getter 和 setter 方法。只是关于这个的几件事。在 ARC 之前,它也有助于确保遵循内存管理部分(处理保留、释放、参数副本)。_username主要用于init等方法,不建议在initdealloc中使用self.param

self.username 与 _username 之间的区别。

self.username 使用访问器(setter 和 getters)。他们调用该方法,并在该方法中访问 ivar。

_username直接使用 ivar。没有方法调用,因此这可能会节省一些开销。

self.username 使您的类符合 KVO 标准,而_username绕过它。

相关内容

  • 没有找到相关文章

最新更新