Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在ViewController.m中,self.username和_username有什么区别_Iphone_Objective C_Ios_Object Code - Fatal编程技术网

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

Iphone 在ViewController.m中,self.username和_username有什么区别,iphone,objective-c,ios,object-code,Iphone,Objective C,Ios,Object Code,两者都是有效的,有什么区别? 我可以使用_用户名吗?当我使用self.username时,它将转到@synthesis username; self.username是一种方法吗 _用户名只是一个变量? 我用几种方法编写_用户名。它也可以在视图中工作。 self.username比_username或not快?我建议您检查一下。username相当于其他语言中的getter和setter方法。关于这件事,我只想说几句。在ARC之前,它用于帮助确保遵循内存管理部分以及处理参数的保留、释放和复制_当

两者都是有效的,有什么区别? 我可以使用_用户名吗?当我使用self.username时,它将转到@synthesis username; self.username是一种方法吗 _用户名只是一个变量? 我用几种方法编写_用户名。它也可以在视图中工作。
self.username比_username或not快?

我建议您检查一下。username相当于其他语言中的getter和setter方法。关于这件事,我只想说几句。在ARC之前,它用于帮助确保遵循内存管理部分以及处理参数的保留、释放和复制_当不建议在init和dealloc中使用self.param时,username主要用于init等方法

self.username将调用用户名的setter,这就是断点跳到synthesis语句的原因

如果使用_变量,则可以使用_变量访问属性。 就你而言:

self.username将值存储到ivar _username和_username=@admin;is还将值存储到_usernameivar。表示两个保存到同一ivar\u用户名

清单4-2使用@synthesis 您可以使用form property=ivar来指示特定的 属性应使用实例变量,例如:

@综合名、姓、年龄=年销售

这指定firstName、lastName和 年龄应该是综合的,财产年龄由 实例变量yearsell。本报告的其他方面 方法由可选属性决定


请参阅self.username与_username之间的差异

username使用访问器setter和getter。他们调用该方法,并在该方法中访问ivar

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


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

检查您,我没有看到KVO和KVC,我会用谷歌搜索它。这是一个有点不同的Java。在一行中。。。当一个对象发生变化时,另一个对象会得到通知。如果你发现任何好的东西,请进行投票并接受。
@synthesize username = _username;
//Method1
    - (void) viewDidLoad
{
self.username = @"admin";
}

//Method2
- (void) viewDidLoad
{
   _username = @"admin"
}