mk1*_*k12 4 properties objective-c accessor
在目标c中,如果使用getter并直接访问ivar做完全相同的事情,getter中没有延迟加载代码,它所做的只是返回ivar,你是否仍然会使用访问器或直接访问ivar,因为有没有不同?为什么?
编辑:我在课堂上谈论.
直接使用ivar可以享受小的性能优势.但是,为了避免混淆,我通常在前面用我的ivars前缀_,然后使用@synthesize foo = _foo合成一个属性; 这意味着我可以做[自我foo]或_foo.然后它在我所指的代码中变得更加清晰.
然而,优势并不多,有些人可能认为这是不成熟的优化.使用属性(或方法)会给你的是能够在以后进化你的类并更改ivar但同时保持属性相同(例如使其成为计算属性).它还允许子类覆盖您的属性并仍然有效.
(顺便说一句,在某些情况下,引用属性语法可能会有所帮助,例如在写入ivar时.在这种情况下,复制|保留的属性支持可以帮助释放前一个对象并获得正确的保留/释放呼叫序列)
归档时间: |
|
查看次数: |
1081 次 |
最近记录: |