@property和@synthesize编译指令的作用是自动编写getter和setter方法。getter 方法和属性同名,而setter 方法的名称则由set前缀 + 属性名(首字母大写)组成。
下面可以看一些具体的Objective-C代码,了解@property和@synthesize编译指令的具体作用:
#import @interface BNRItem : NSObject
{
NSString *itemName;
}
/* 接口文件中getter/setter方法原型定义 */
- (void)setItemName:(NSString *)str;
- (NSString *)itemName;
上面这段代码,等同于 @property 编译指令的代码:
@property itemName;
在实现文件中,如下Objective-C 代码 – getter/setter 方法:
@implementation BNRItem
- (void)setItemName:(NSString *)str
{
itemName = str;
}
- (NSString *)itemName
{
return itemName;
}
上述代码等同于编译指令 @synthesize 在实现文件中的代码:
@synthesize itemName;
简单归纳一下,@property 编译指令在interface 文件自动生成实例变量的getter、setter 方法原型;@synthesize 编译指令在implementation 文件自动生成 实例变量的 getter、setter方法的具体实现。