gpt4 book ai didi

objective-c - @property(复制)与方法[复制]

转载 作者:行者123 更新时间:2023-12-02 07:57:28 28 4
gpt4 key购买 nike

下面的(A)和(B)有区别吗?
(假设 NON ARC,如果重要的话)

// --- (A) ---
@interface Zoo : NSObject{}
@property (copy) Dog *dog;
@end
//..... then somewhere
someZoo.dog = another_dog;
// --- (B) ---
@interface Zoo : NSObject{}
@property (assign) Dog *dog;
@end
//..... then somewhere
someZoo.dog = [another_dog copy];

如果答案是否定的,使用(A)有什么好处吗?
我发现方法 (B) 不太容易出错,因为显式代码准确地显示了正在发生的事情,但我不是专家,因此出现了这个问题。

最佳答案

A 和 B 之间的区别在于,在 B 中,您必须记住在分配 dog 的任何地方使用 copy,而 A 会为您处理这些。 B 更脆弱。

另一个考虑因素是,对于 A,您可以浏览界面并理解内存语义,而对于 B,您必须通过 Zoo 的整个实现来推断发生了什么.

当然,正如 Davyd 指出的 (+1),您不会使用 assign。如果使用复制语义,它应该是 copy,如果不是,它应该是 retain

关于objective-c - @property(复制)与方法[复制],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61949898/

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