1.5 用@synthesize编写Property Assessors
1、问题
自定义类需要表示它所建模的实体的属性。那你就需要知道在Objective-C中如何定义和实现这些属性。如果你不想自己编写getter和setter方法,那你可以用@synthesize。
2、解决方案
要用@synthesize来实现properties,你仍然需要在类的接口中声明这些properties,之后在类的实现中实现这些properties。只是,这次不需要写你自己的assessor代码了,而是用@synthesize关键字命令编译器在编译过程中为你插入这样的代码。
3、原理
第1个要编写的文件就是头文件
#import <Foundation/Foundation.h>
@interface Car : NSObject
@property(strong) NSString *name;
@end
第2个当然就是类的实现文件,此时就用到@synthesize关键字以及将那些你希望生成getters和setters方法的property包含进来,就是放在该关键字的后面。
#import "Car.h"
@implementation Car
@synthesize name;
@end
调用:
(1)用dot notation
car.name = @"Sports Car";
NSLog(@"car is %@", car.name);
(2)用标准的Objective-C消息
4、代码
Listing 1-7. Car.h
#import <Foundation/Foundation.h>
@interface Car : NSObject
@property(strong) NSString *name;
@end
=========================================
Listing 1-8. Car.m
#import "Car.h"
@implementation Car
@synthesize name;
@end
===========================================
Listing 1-9. main.m
#import "Car.h"
int main (int argc, const char * argv[]){
@autoreleasepool {
Car *car = [[Car alloc] init];
car.name = @"Sports Car";
NSLog(@"car.name is %@", car.name);
[car setName:@"New Car Name"];
NSLog(@"car.name is %@", [car name]);
}
return 0;
}