iOS中self和下划线的区别

 我来答
豆日好4272
2017-07-05 · TA获得超过5148个赞
知道大有可为答主
回答量:6577
采纳率:38%
帮助的人:992万
展开全部

区别如下:


  1. 通过self.xxx 访问的方法的引用,包含了set和get方法。而通过ios 属性下划线是获取自己的实例变量,不包含set和get的方法。

2. self.x xx是对属性的访问;而ios 属性_xxx是对局部变量的访问,所有被声明为属性的成员。再ios5之前需要使用编译指令@synthesize 来告诉编译器帮助生成属性的getter和setter方法,之后这个指令可以不用认为的指定了,默认情况下编译器会帮助生成。编译器在生成getter,setter方法时是有优先级的,它首先查找当前的类中用户是否定义属性的getter,setter方法,如果有,则编译器会跳过,不会再生成,使用用户定义的方法。也就是说在使用self.xxx时是调用一个getter方法。会使引用计数加一,而ios 属性_xxx不会使用引用技术加一的。


3. 所有使用self.xxx是更好的选择,因为这样可以兼容懒加载,同时也避免了使用下滑线的时候忽略了self这个指针,后者容易在BLock中造成循环引用。同时,使用ios 属性 _是获取不到父类的属性,因为它只是对局部变量的访问。


因此,self方法实际上是用了get和set方法间接调用,ios 属性下划线方法是直接对变量操作。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
微测检测5.10
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇... 点击进入详情页
本回答由微测检测5.10提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式