本文主要是介绍iOS之属性引用self.xx与_xx的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
https://www.cnblogs.com/mukekeheart/p/8251366.html
@property
声明的属性默认会生成一个_类型的成员变量,同时也会生成setter/getter
方法。苹果将默认编译器从GCC转换为LLVM(low level virtual machine
),才不再需要为属性声明实例变量了。在没有更改之前,属性的正常写法需要 成员变量 + @property + @synthesize 成员变量
三个步骤。 上面我们说到了属性与成员变量、@property 以及 @synthesize之间的联系与区别。同时,我们提到了self.xx和_xx的一点区别,其中self.xx是调用的xx属性的get/set方法,而_xx则只是使用成员变量_xx,并不会调用get/set方法。两者的更深层次的区别在于,通过存取方法访问比直接访问多做了一些其他的事情(例如内存管理,复制值等),例如如果属性在@property中属性的修饰符有retain,那么当使用self.xx的时候相应的属性的引用计数器由于生成了setter方法而进行加1操作,此时的retaincount为2。
这篇关于iOS之属性引用self.xx与_xx的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!