美文网首页
Tip之Self vs _

Tip之Self vs _

作者: oopp | 来源:发表于2016-06-05 18:00 被阅读106次

在iOS中,定义的属性可以通过self.property或者_property获得.那到底应该用那种呢?

答案是都可以,各有不同,自行取舍.但是,一定要统一!统一!统一!

  • init和alloc中不要使用self风格.所以在这两个地方就只能使用下划线风格,一定程度上造成风格的割裂.
  • self风格走消息转发路线,效率比下划线风格低.尽管绝大多数时候,这种效率可以忽略.
  • self风格无法方便的知道getter/setter是否被重写.当你部分属性重写了getter/setter而部分没有的时候,开发人员很难通过代码知道是否有重写.除非手动调用[self property].而下划线风格则不会.
  • self风格使得kvo正常工作.而下划线则不可以.原因是,kvo本质上是在setter方法中添加will change和did change的notification.如果使用下划线风格,根本不会进入方法进行,触发notification也就无从谈起.
  • self风格在一定程度上能够辅助属性的追踪.当一个属性被非常繁琐的调用/变更时.重写getter并且打上日志是一个很不错的方式.尤其是维护不熟悉的代码,效果可能比断点更好.
  • 下划线风格更短,更简洁.
  • 在block中,self风格和_风格都可能retain.造成循环引用.不过下划线风格比较隐蔽,容易被忽略.

相关文章

网友评论

      本文标题:Tip之Self vs _

      本文链接:https://www.haomeiwen.com/subject/lrjrdttx.html