zoukankan      html  css  js  c++  java
  • 【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文件中面设置函数(方法)详细内容。这个非常easy。由于这个函数(方法)实现的功能非常easy(返回值或者设置值的功能)

    //设置值就是把形參值传递给实例变量值
    -(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近期版本号改进的功能。

  • 相关阅读:
    纯C分割 字符串 devC++版本 vs各种奇怪的问题,
    C的字符串操作 split
    MyArray框架搭建与实现
    三目运算符(C++)
    ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
    sqlServer not in 分页
    web 移动端开发手机查看效果
    webpack 安装babel处理ES6语法
    webpack 的环境搭建
    web 服务器添加数据到 SQL server
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7079517.html
Copyright © 2011-2022 走看看