天天看点

OC中合成存取方法

首先需要声明一下实例变量和属性的区别。

实例变量:

/// 接口文件

#import <Foundation/Foundation.h>

- (int) a; // 实例变量

- (int) b;

- (void) fun1;

...

@end

/// 实现文件

#import "XXX.h"

@implementation XXX

{

int a; // 实例变量

int b;

}

- (void) fun1

{

...

}

...

@end

属性:

@interface XXX:NSObject

@property int a, b; // @property指令

- (void) a;

...

@end

需要注意的地方:

1、如果声明了属性,那么就不需要在implementation中再次声明。

2、@synthesize

经常在实现文件中出现@synthsize a,b;这样就实现了两个个取值方法a,b;两个设置方法seta,setb;

但其实这行也可以不用,编译器也会为你自动生成setter和getter,不过编译器生成的属性名会在第一个字符自动加一个下划线。如:_a,_b;

产生自动存取方法,让编译器完成这件事是非常值得的。