美文网首页i日久生。。。
iOS中成员变量和属性

iOS中成员变量和属性

作者: wjam小涛涛 | 来源:发表于2017-12-18 22:39 被阅读362次

    Objective-C的成员变量和属性经常让人产生迷惑性,其实成员变量和属性并不是一样的东西。

    @interface Person : NSObject
    {
        NSString *_sex;
    }
    @property (nonatomic, copy) NSString *name;
    @end
    

    定义一个Person类,在类里面分别定一个成员变量_sex和属性name。然后点语法调用_sexname

    屏幕快照 2017-12-18 下午10.17.42.png
    当我们用点语法调用_sex,Xcode报错,告诉我们在person中并没有属性_sex,这就说明了_sex并不是属性,而是成员变量。而且我们知道name能用点语法调用,是因为生成了setget方法。sef.name实际上点用的是setget方法。_sex并没有生成setget方法。

    我们依据提示修复错误,得到如下结果

    屏幕快照 2017-12-18 下午10.24.48.png
    说明Objective-C里面的成员变量默认@protected修饰的。
    1. 成员变量:
    1. 成员变量的默认修饰是@protected。
    2. 成员变量不会自动生成set和get方法,需要自己手动实现。
    3. 成员变量不能用点语法调用,因为没有set和get方法,只能使用->调用。
    
    1. 属性
    1. 属性的默认修饰是@protected。
    2. 属性会自动生成set和get方法。
    3. 属性用点语法调用,点语法实际上调用的是set和get方法。
    

    现在的开发中已经基本不用成员变量了。

    相关文章

      网友评论

        本文标题:iOS中成员变量和属性

        本文链接:https://www.haomeiwen.com/subject/rydvwxtx.html