【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最近版本改进的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值