我从不使用ivars。我仅使用属性-有时为属性分配原始类型,有时在"private" class extension上。我已经看到了在切换到ARC时不使用ivars的优点-我借了一些带有很多ivars的代码,但我仍然无法“ARC”,因为我不知道需要保留什么内容。因此,我知道使用ivars而不是的的一些优点,但是使用ivars而不是属性的优点是什么?
注意:我完全依赖于属性声明自动添加(由编译器?)的ivars。
不要标记为关闭:我看过其他一些问题,例如this和this,但都没有找到答案。 标题看起来不错,,但就像SO上的许多问题一样,的问题是一堆奇怪的疑问和其他东西。
最佳答案
声明的属性不能与@protected
ivar一样对待。您可以在类扩展中声明该属性,以使其不受任何其他类私有(private),或者可以在 header 接口(interface)中声明该属性以使其可公开访问,但是无法使它只能由子类访问。这将需要ivar声明。
编辑
只是另一个简短的想法。我最近一直在编写许多框架类,并且我认为使用iVars作为文档可能要说些什么。
例如,假设您正在紧密循环中调用某些代码,并且想要确保其性能。在该紧密循环内,您想访问一个类的属性,但需要知道每次调用它时,返回值是即时计算的还是存储在iVar中。在标题中查看iVar是确保您无需花费太多开销就可以获取该变量的快速方法。
关于objective-c - 没有ivars->我想念什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7418858/