gpt4 book ai didi

objective-c - 实例变量与属性有什么区别?

转载 作者:搜寻专家 更新时间:2023-10-30 20:04:21 25 4
gpt4 key购买 nike

我见过很多这样做的代码:

@interface Test0 : NSObject {
@private int iVar;
}
@property (readwrite,assign) int iVar;
@end

和一些其他代码:

@interface Test0 : NSObject {
}
@property (readwrite,assign) int iVar;
@end

我知道您使用 @synthesize iVar 告诉编译器为属性 iVar 生成 getter 和 setter 方法。

我的问题:我们需要声明 @private int iVar; 实例变量吗?这样做有什么好处?声明实例变量与属性的最佳实践是什么?编译器是否将实例变量与属性链接起来?

提前致谢。

最佳答案

使用非脆弱基类的现代 Objective-C 运行时和编译器(IIRC,OS X 上的 64 位运行时和 iOS 4.0 及更高版本的运行时)允许您省略实例变量。您的第一个示例是较旧的运行时所必需的,后者是现代运行时所需的全部内容。

关于objective-c - 实例变量与属性有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4299487/

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