Properties objective-c成员变量和属性语句用法

Properties objective-c成员变量和属性语句用法,properties,synthesize,Properties,Synthesize,最近我开始学习Objective-C,我对成员var和属性感到困惑。我想知道以下三个代码块之间的区别: 一, 二, 三, 多谢各位 1:这将声明实例变量及其附带的声明属性。当您合成属性时,例如属性foo,将自动生成引用实例变量的foo和setFoo方法(由于具有相同的名称),当您使用点符号(例如someInstance.foo=bar)访问它们时,将调用这些方法。因为您将属性定义为retain,所以当您使用setter或通过点符号将对象指定给属性时,实例变量指向的现有对象将被释放,新对象将被指定

最近我开始学习Objective-C,我对成员var和属性感到困惑。我想知道以下三个代码块之间的区别:

一,

二,

三,


多谢各位

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