关于 iOS @property obj 访问

2015-06-26 16:13:45 +08:00
 snowspace
_obj 和self.obj 访问有什么区别,是self.obj通过get方法获取,_obj直接访问私有变量吗,_obj是编译器自动调用@synthesize生成的吗?对这个问题的理解还是有点模糊,求大神指点一下。
2577 次点击
所在节点    iDev
5 条回复
chmlai
2015-06-26 16:20:53 +08:00
shi
caiyangjieto
2015-06-26 17:11:34 +08:00
_obj 是直接拿属性的指针。self.obj 和 [self obj] 是一样的,会走getter方法。
你调用另外一个对象的属性的时候只有点语法和中括号,这两个是一致的,都会走getter和setter方法。面向切口编程,苹果给你提供了接口。下划线这种是为了方便快速访问本类的属性。(下划线的访问速度比getter方法快)
miki6180
2015-06-26 17:23:50 +08:00
前者是因为在类中, 可以直接访问成员变量。后者是通过对成员变量进行了一层封装,通过getter方法返回该成员变量。自动生产的话是私有的。下划线开头主要是为了于其它方法的参数进行区别, 一目了然,可以看出私有的成员变量。
huoshanhui
2015-06-26 23:47:44 +08:00
提醒一句:记得在 init 和 dealloc 里不要使用点语法。
vincentxue
2015-06-29 16:23:12 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/201395

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX