首页 > 代码库 > 【OC学习-8】存取器方法?getter和setter?其实就是赋值和返回值的两种函数
【OC学习-8】存取器方法?getter和setter?其实就是赋值和返回值的两种函数
我们在声明类的时候,有实例变量+方法(函数),这些实例变量如果默认的话都是protected类型,一般无法直接访问,更别提赋值和调用了,所以就产生了两种函数,getter函数就是能够返回实例变量的值,setter函数就是能够设置实例变量的值。(当然如果你把实例变量改成public的话可以直接调用,但不安全)
存取器方法(函数)就是:存——赋值setter函数,取——返回值getter函数。
(1)先在类的.h文件里面声明这个函数(方法),一般都有默认的格式(如下):返回值函数的函数名字一般都和变量相同,如name,sid,age;设置值函数的函数名字一般都是set+变量名(首字母大写),如setName,setAge,setSid。
//在ASStudent.h里面声明的函数(方法) -(void)setName:(NSString *)aName; -(void)setAge:(int)aAge; -(void)setSid:(NSString *)aSid; -(NSString*)name; -(NSString *)sid; -(int)age;
(2)在类的.m文件里面设置函数(方法)具体内容,这个很简单,因为这个函数(方法)实现的功能很简单(返回值或者设置值的功能)
//设置值就是把形参值传递给实例变量值 -(void)setName:(NSString *)aName{ name=aName; } -(void)setAge:(int)aAge{ age=aAge; } -(void)setSid:(NSString *)aSid;{ sid=aSid; } //返回值就是直接return这个实例变量本身 -(NSString*)name{ return name; } -(NSString *)sid{ return sid; } -(int)age{ return age; }
(3)在main.m里面使用时候可以用函数形式也可以用点形式
//两者相同。下面那个点函数在赋值时,其实系统还是会调用上面那个函数 [zhang setName:@"tom"]; zhang.name=@"tom"; //两者相同,下面那个点函数在返回值时,其实系统还会调用上面那个函数 NSLog(@"%@,%d",[zhang name],[zhang age]); NSLog(@"%@,%d",zhang.name,zhang.age);
所以,至于可以使用点函数来书写,其实是为了方便程序员,因为原理,着也是OC最近版本改进的功能。
【OC学习-8】存取器方法?getter和setter?其实就是赋值和返回值的两种函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。