OC中property方法的使用

咱们直入主题,关于property方法,咱们先来了解一下相关的知识,首先是成员变量,实例变量,属性变量。函数

咱们定义一个类来看一下atom

@interface Person :NSObject{对象

 

NSInteger age;      //年龄变量字符串

NSString *name;   //名字变量get

 

}it

@property(nonatomic,assign)float height;  //身高变量io

@property(nonatomic,strong)NSString *skinColor;   //肤色变量基础

@end变量

 

@implementation Person数据类型

 

@end

在这个类中,在大括号内定义的变量属于成员变量,成员变量分为实例变量和基本数据类型变量,咱们如何去区分呢?若是说这个成员变量是类变量,即实例变量,其余的则为成员变量。在上面的类中,name是字符串类变量,因此是实例变量,age则为成员变量。那么什么是属性变量呢?属性变量就是用property声明的变量,而没必要关注是不是类变量,皆为属性变量。到这里相信你们对这几种变量已经很熟悉了。学过Java的同窗知道,Java中有get方法和set方法,并且能够很方便的由系统自动生成。那么在OC中能不能由系统自动生成get和set方法呢?答案是能够的。若是咱们有不少变量须要写get和set方法,是一个很难操做的过程。在OC中如何实现呢?就是用咱们的property方法去生成属性变量。注意,在OC中,只有由property生成的属性变量才带有set和get方法!

那么生成一个属性变量,property就为咱们生成了get和set方法。(nonatomic,strong/assing),括号内的各个代码咱们暂且先不解释,在目前阶段,咱们在写property方法时,第一个都是nonatomic,第二个能够是strong或assign,咱们只须要知道,若是变量是OC的类变量,那么咱们就选择strong,若是是基础数据类型变量咱们就选择assign。日后学会慢慢深刻理解。使用property定义的变量,咱们在main函数中能够直接调用,也接触到了咱们要阐述的另外一个知识点,点语法。咱们在主函数中实例化一个对象 Person *p = [[Person alloc]init];咱们想为身高变量赋值,p.height = 180.0;那么此时咱们就使用了点语法,此时咱们要注意,使用点语法就至关于调用property给咱们生成的get和set方法,若是点语法在等号左边,如前面身高赋值,就是默认调用set

方法,若是点语法在等号右边或直接使用点语法输出数据,则默认调用get方法,如  float temp = p.height;NSLog(@"%f",p.height);点语法只能用于由property生成的属性变量,其余都不可使用。假如我在类中定义一个方法,在调用的时候则不能使用点语法调用该方法,可使用中括号调用。

相关文章
相关标签/搜索