gpt4 book ai didi

ios - Objective-C 中非综合属性的弱/强注解

转载 作者:可可西里 更新时间:2023-11-01 06:24:38 24 4
gpt4 key购买 nike

自 Objective-C 2.0 以来,我们有了属性,这是一种用于获取和设置实例变量值的良好语法。自 Clang 3.1 以来,所有非动态属性、非只读属性或没有自定义 getter 和 setter 的属性都自动合成到 ivars。自 ARC 以来,我们为属性提供了弱/强注释,ARC 使用这些注释来定义自动合成属性的内存管理逻辑

属性仍然可以手动合成,例如例如,用于由 ivar 支持并返回默认值的只读属性。

有时,如果根本不合成属性,它们也很有用。当我使用这种行为时,我发现了一些用例:

  • 自定义 getter 和 setter,它们使用自定义 ivar 来存储实际值并执行一些额外的操作。
  • 动态属性,例如在 NSManagedObject 的子类中。
  • 只读属性,它只传递存储在另一个属性(例如私有(private)属性)中的对象的属性。

问题: 根据实际使用情况,将这些非合成属性标注为 weak/strong 是否有意义?最佳做法是什么?

( https://twitter.com/kubanekl/status/427142577310408704 )

最佳答案

我会说答案是,即使只是为了文档。

即使您不使用任何与编译器和框架相关的默认实现,而是自己实现所有内容,尝试使用这些属性的人如果能够获得提示,也会更好地理解 API内存管理的行为方式。一个人实际上不必知道 setter 或 getter 是如何在内部实现的,但他可能必须知道,例如,在调用 setter 之后,值是否被复制或保留或只是分配,并实现他的一面相应的事情。

关于ios - Objective-C 中非综合属性的弱/强注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21613985/

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