gpt4 book ai didi

objective-c - 每个 ivar 都必须是一个属性吗?

转载 作者:IT老高 更新时间:2023-10-28 11:31:39 26 4
gpt4 key购买 nike

我看到它在为 iOS 编码时到处都建议使用属性来访问实例变量,因为这对内存管理等有好处。

这个建议不太适合我。我发现使用属性而不是普通的旧 ivars 只需要太多代码,如果您对内存管理感到满意,我并没有真正看到好处。真的那么重要吗?您管理实例变量的方法是什么?

最佳答案

实际上没有必要为所有 ivars 声明属性。想到几点:

  • 如果一个 ivar 在对象的生命周期内只被分配一次,那么声明一个属性并不会真正获得任何好处。只需在 init 期间保留/复制/分配,然后在 dealloc 期间根据需要释放。
  • 如果要频繁更改 ivar,则声明属性并始终使用访问器将更容易避免内存管理错误。
  • 如果属性和 ivars 是私有(private)的,您可以在 .m 文件而不是 .h 文件的类扩展中声明属性。
  • 针对 iOS 4.0+ 时,如果定义属性并合成访问器,则根本不需要在 header 中声明 ivars。

所以我通常使用属性,但是对于像 NSMutableArray 这样一个对象在 init 期间分配并用来保存一堆东西的东西,我将使用普通的旧的 ivar,因为我永远不会重新分配 ivar。

关于objective-c - 每个 ivar 都必须是一个属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5031230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com