欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

1.5 用@synthesize编写Property Assessors

程序员文章站 2022-07-07 15:12:44
...

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; 

}