美文网首页
iOS中成员变量和属性

iOS中成员变量和属性

作者: luonaerduo | 来源:发表于2019-08-08 10:56 被阅读0次

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

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

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

image

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


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

image

说明Objective-C里面的成员变量默认@protected修饰的。

  1. 成员变量:
1. 成员变量的默认修饰是@protected。
2. 成员变量不会自动生成set和get方法,需要自己手动实现。
3. 成员变量不能用点语法调用,因为没有set和get方法,只能使用->调用。

  1. 属性
1. 属性的默认修饰是@protected。
2. 属性会自动生成set和get方法。
3. 属性用点语法调用,点语法实际上调用的是set和get方法。


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

作者:wjam小涛涛
链接:https://www.jianshu.com/p/99251e21a363
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

相关文章

网友评论

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

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