在OC中我们可以通过指令@property定义属性
一般定义属性方法如下:
.h文件中:
@property int a;
-(void)changeValue:(int)aValue;
在类的实例方法中,我们可以通过下面两种方式来访问a的属性
1.直接用属性名访问:
--(void)changeValue:(int)aValue{
_a = aValue;//默认生成的属性成员变量前会自动添加"_"前缀
}
2.通过self.a的形式访问:
--(void)changeValue:(int)aValue{
self.a = aValue;
}
两种访问形式有区别吗?答案是肯定的
第一种直接用属性名访问,类似于C++的访问方式,是直接访问实例变量并赋值.而第二种方式,并不像其表面这么直观,它其实是调用编译器自动生成的setter、getter方法对对a变量进行赋值,即:
--(void)changeValue:(int)aValue{
self.a = aValue; //等同于[self seta:aValue];
}
个人推荐self.a的形式更好一些,因为它封装了访问方法,加强了我们对变量的控制,也更加面向对象.