gpt4 book ai didi

ios - 将每个属性设置为 strong 有什么缺点?

转载 作者:可可西里 更新时间:2023-11-01 04:35:15 27 4
gpt4 key购买 nike

作为一名新的 iOS 程序员,我今天有很多错误要修复,其中一些与我使用弱属性而不是强属性有关。

我意识到一个好的程序员不会有这个问题,只会将属性设置为需要的 strong,但是尽管如此,在我的新手眼中,我不明白为什么我应该使用 weak,它只会增加问题的风险。

最佳答案

一般来说,您应该通过查看持有属性的类与该属性的值之间的关系,以及传递的属性的种类。

  • 如果要设置的属性是原始属性,请使用assign(或者根本不使用所有权限定符)
  • 如果设置的属性是标量、不可变对象(immutable对象),请使用 strong
  • 如果要设置的属性是实现 NSCopying 协议(protocol)的标量可变对象,请使用 copy
  • 如果设置的属性是可变的,并且所有权转移给您的对象,请使用 strong
  • 如果设置的属性是一个实现NSCopying 协议(protocol)的可变对象,但所有权仍然属于调用者,则使用copy
  • 如果设置的属性是反向引用(即“子”对象中的“父”属性),请使用weak

所有权的概念在引用计数内存模型中非常重要。这是您做出决定的主要驱动因素。您需要确定对象的主要所有者在哪里,并为该所有者提供强引用。如果所有权在一组对象之间共享,请为它们全部提供强引用。

最困难的情况是对象可以直接或间接地相互拥有。在这种情况下,您最好将“所有权”替换为“了解”,为所有对象提供一个“拥有”所有人的共同“顶级”所有者,并使用 weak 对“了解”关系进行建模引用资料。

关于ios - 将每个属性设置为 strong 有什么缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20553928/

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