gpt4 book ai didi

objective-c - Objective-C : @property declaration and instance variable declaration

转载 作者:太空狗 更新时间:2023-10-30 03:58:22 24 4
gpt4 key购买 nike

虽然问题很基础,但我发现了解它对于进行IOS编程非常重要。有时我们过去只声明实例变量,我们不为它设置任何关联的属性。有些地方我们只是声明属性并使用合成来获取或设置值。有时我觉得有必要在代码中声明两者,当编译给我警告时! Objective C 中属性操作背后的基本原理是什么?我知道为任何实例变量创建 getter 和 setter 的基本要求,但是什么时候?我已经多次看到我们根本不使用属性,之后我们也很容易设置和获取变量的值。此外,我还不清楚不同类型的属性,如原子、非原子、强、保留。 XCODE 升级到 4.2 动摇了我对内存管理的概念。谁能拨开我心中的乌云?

最佳答案

属性始终是直接访问 ivar 的首选方式,主要有以下原因:

  • 您可以覆盖子类中的 getter 或 setter
  • 您可以定义“赋值行为”(即copyassignretain/strongweak )
  • 您可以同步ivar访问

关键词:

  • copy:对象在设置时复制到ivar
  • assign:对象的指针在设置时分配给ivar
  • retain/strong:对象保留在集合上
  • weak:在 ARC 中,这类似于 assign,但会在实例被释放时自动设置为 nil,也用于垃圾收集环境。
  • nonatomic:访问器不是@synchronized(线程安全),因此速度更快
  • atomic:访问器是@synchronized(线程安全),因此速度较慢

通常,您应该始终合成一个 ivar。如果您出于性能原因需要更快的访问速度,您也可以随时直接访问合成的 ivar。

关于objective-c - Objective-C : @property declaration and instance variable declaration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9357774/

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