gpt4 book ai didi

objective-c - 关于ARC中只读@property的问题

转载 作者:太空狗 更新时间:2023-10-30 03:39:40 25 4
gpt4 key购买 nike

在我的接口(interface)(.h)文件中,我有

@property(readonly) NSString *foo;

在我的实现 (.m) 文件中,我有

@synthesize foo;

打开 ARC 后,编译器给我这个错误:自动引用计数问题:ARC 禁止合成具有未指定所有权或存储属性的 Objective-C 对象的属性。

如果我向属性添加 strongweakcopy,错误就会消失。为什么是这样?为什么对于只读 属性,这些东西之间会有任何差异,这些差异是什么,为什么程序员必须担心它们?为什么编译器不能智能地推断出只读属性的默认设置?

另一个问题:strongweakcopy 是 ARC 中唯一有意义的东西,对吧?我不应该再使用 retainassign 了,对吧?

最佳答案

您声明了一个没有支持 ivar 的 @property。因此,当编译器看到 @synthesize 时,它会尝试为您合成一个支持 ivar。但是你还没有指定你想要什么样的ivar。应该是 __strong 吗? __弱__unsafe_unretained?最初,属性的默认存储属性是assign,与__unsafe_unretained 相同。但是,在 ARC 下,这几乎总是是错误的选择。因此,与其合成不安全的 ivar,他们还要求您指定所需的 ivar 类型。

关于objective-c - 关于ARC中只读@property的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8716840/

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