gpt4 book ai didi

iphone - 属性(property)申报和自动后备存储分配

转载 作者:太空狗 更新时间:2023-10-30 03:23:58 27 4
gpt4 key购买 nike

我正在尝试理解 Objective-C 属性,但我对它们的语法有一些挥之不去的问题。

像这样为属性显式声明 ivar 有什么区别:

@interface myObject1 : NSObject {
NSString *title;
}
@property (copy) NSString *title;
@end

还有这个:

@interface myObject2 : NSObject {
}
@property (copy) NSString *title;
@end

myObject2 示例似乎有效。是否可以像在 myObject2 中那样实现属性,还是应该始终显式定义关联的 ivar?

不明确声明 ivar 的后果是什么?

最佳答案

在现代 Objective C 运行时(nonfragile-abi)上它们是相同的,ivar 支持将由 @synthesize 声明自动创建。这是 iPhone 和 64 位 Mac OS X 应用程序使用的运行时。 32 位 Mac OS X 使用遗留运行时,无法合成 ivar,您编写的第二位代码将无法正确编译。

最新版本的 iPhone 模拟器使用现代运行时,但旧版本不使用。因此,虽然这两个代码示例都可以在实际的 iPhone 上运行(合成必要的存储),但第二个示例将无法针对模拟器进行编译,除非您拥有最新的 Xcode。

关于iphone - 属性(property)申报和自动后备存储分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3238009/

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