![]() |
1
4
如果您为一个IVAR定义了一个属性,那么您应该使用它,而不是直接访问IVAR。它允许子类重写setter/getter,并执行一些不同的操作,只从ivar中获取值。 唯一的例外是init方法和dealloc。 |
![]() |
2
2
使用
您只需向getter方法添加额外的调用,我认为在大多数情况下这是不必要的。另一方面,除非您实现自己的定制getter并在那里做一些奇怪的事情,否则这个构造的开销非常小,因此在实践中,我认为这只是样式问题。(我个人不会在这里使用财产) |
![]() |
3
1
如果您要子类化,或者让其他人重用您的代码,并且他们想要覆盖您的功能,那么accessor方法非常方便。 |
![]() |
4
0
使用self.ivar还存在一些内存清理问题。特别是你保留了一个属于其他阶级的财产。然后你得到任何新的对象,想要改变对self.ivar=new object的引用。如果不使用self.ivar,则当newObject也为其他人所有时,它可能会具有错误的访问权限。 默认的setter检查是否引用,如果不是nil,则释放旧值并将新的ivar设置为新值。 今天我在使用没有自己的对象,陷入了这个问题。 简而言之,如果对象是共享的,请使用self.ivar… |
![]() |
user2606782 · 限制子视图在superview边界内的移动 7 年前 |