gpt4 book ai didi

objective-c - 为什么不自动合成属性

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

也许这是个愚蠢的问题。每次我创建一个 @property 时,我都必须 @synthesize 它。但这毫无意义,您可以使用 @property(whatever) Type* property 做的唯一事情就是在实现文件中执行 @synthesize property。那么为什么两者都需要呢?为什么编译器不自动生成 getter/setter 方法而无需我编写 @synthesize property

最佳答案

在当前的生产编译器中,默认 -- 没有 @synthesize 的情况-- 什么都不做,然后在未提供实现时发出警告。

@synthesize在最新版本的 LLVM 2.0 编译器中是自动的。

@dynamic自己实现 setter/getter 时,不需要@dynamic在运行时动态提供实现时使用。即 @dynamic foo;结合@property <type> foo;如果您不提供 -foo 将导致编译器不发出警告-setFoo:实现。

请注意,您还可以使用 @synthesize propertyName = instanceVariableName;使用特定的、不同名称的实例变量作为后备存储。

@property在接口(interface)中,很多是 getter/setter 方法声明的简写形式。它还带有编译器在 @synthesize 期间利用的更多元数据(保留、分配等)。 .

而且,一如既往,atomic属性并不能真正帮助线程安全。

关于objective-c - 为什么不自动合成属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4068771/

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