2015-02-21 | code

Objective-C 属性声明

目录

##显示声明属性

属性声明可以让编译器自动生成与数据成员同名的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
@interface ClassA : NSObject
{
int b;
}
//声明属性方法 相当于直接声明了 a的getter/setter方法
@property int a;
- (int)b;
- (void)setB:(int) val;

//property可以附带两个属性 readonly,readwrite
//readwrite为默认状态
//readonly相当于只声明getter
@property (readonly) int c;

##属性实现

1
2
3
4

//@synthesize 可以为类的实例变量自动生成和声明属性一致的访问方法
//只有接口文件声明了对应的属性才可以使用@synthesize
@synthesize a;

##@property的属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//显示指定getter/setter方法名
// getter = getter方法名;
// setter = setter方法名;
@property (setter=XXXX) int x;

//读写属性
// readonly
// readwrite
@property (readonly) int x;

//赋值时属性
//assign 单纯的赋值
//retain 赋值时进行保持操作

//赋值时选项
//unsafe_unretained 同assign一样(用于ARC)
//strong 同retain一样(用于ARC)
//weak 若引用(用于ARC)
//copy 复制对象

//原子操作
//nonatomic 非原子操作,非线程安全

##通过.操作符访问属性

1
2
3
4
5
6
7
8
9
10
int main()
{
Volume *v = [[Volume alloc] init];
v.maxVolume = 100;
v.minVolume = 0;

printf("max = %d, min = %d",
v.maxVolume,v.minVolume);
return 0;
}
  • 只有实例变量才能用,不能对id类型, void类型 ,C中的数组类型变量应用点操作符