Properties objective-c成员变量和属性语句用法
最近我开始学习Objective-C,我对成员var和属性感到困惑。我想知道以下三个代码块之间的区别: 一, 二, 三,Properties objective-c成员变量和属性语句用法,properties,synthesize,Properties,Synthesize,最近我开始学习Objective-C,我对成员var和属性感到困惑。我想知道以下三个代码块之间的区别: 一, 二, 三, 多谢各位 1:这将声明实例变量及其附带的声明属性。当您合成属性时,例如属性foo,将自动生成引用实例变量的foo和setFoo方法(由于具有相同的名称),当您使用点符号(例如someInstance.foo=bar)访问它们时,将调用这些方法。因为您将属性定义为retain,所以当您使用setter或通过点符号将对象指定给属性时,实例变量指向的现有对象将被释放,新对象将被指定
多谢各位 1:这将声明实例变量及其附带的声明属性。当您合成属性时,例如属性
foo
,将自动生成引用实例变量的foo
和setFoo
方法(由于具有相同的名称),当您使用点符号(例如someInstance.foo=bar
)访问它们时,将调用这些方法。因为您将属性定义为retain
,所以当您使用setter或通过点符号将对象指定给属性时,实例变量指向的现有对象将被释放,新对象将被指定给实例变量并保留
2:和1一模一样。实例变量是隐含的
3:实例变量在那里,但属性不在那里,因此您将无法通过点表示法访问它们,并且没有合成getter/setter方法
我强烈建议阅读关于这一点的官方文件,它非常清楚,并以一种相当直接的方式将其全部列出
@interface Application
{
UserInfo* userInfo;
ApplicationInfo*applicationInfo;
}
@property (retain) UserInfo*userInfo; // @synthesize userInfo;
@property (retain) ApplicationInfo* applicationInfo ; // @synthesize applicationInfo;
@end
@interface Application
{
}
@property (retain) UserInfo*userInfo; // @synthesize userInfo;
@property (retain) ApplicationInfo* applicationInfo ; // @synthesize applicationInfo;
@end
@interface Application
{
UserInfo* userInfo;
ApplicationInfo*applicationInfo;
}
@end