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;

扫描二维码关注公众号,回复: 409786 查看本文章

@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; 

}

猜你喜欢

转载自zsjg13.iteye.com/blog/2225826
1.5
今日推荐