self总是指向调用该方法的对象。
self总是代表当前类的对象,当self出现在某个方法体中时,它代表的对象是不确定的,但是类型是确定的,它所代表的对象就是当前类的实例;当这个方法被调用时,它所代表的对象就确定下来了:谁在调用这个方法,self就代表谁。
self.xxx 和_xxx的区别
_xxx是对属性的直接引用,不通过setter和getter方法。
self.xxx是通过访问方法的引用(包含setter和getter方法)。
所有使用self.xxx是更好的选择,因为这样可以兼容懒加载,同时也避免了使用下滑线的时候忽略了self这个指针,后者容易在BLock中造成循环引用。同时,使用ios 属性 _是获取不到父类的属性,因为它只是对局部变量的访问。
因此,self方法实际上是用了get和set方法间接调用,ios 属性下划线方法是直接对变量操作。
网友评论