美文网首页
关于成员变量、实例变量、属性

关于成员变量、实例变量、属性

作者: 蔚尼 | 来源:发表于2018-07-05 16:30 被阅读6次

还是老样子,直接入正题。势必今天开始不再混淆成员变量、实例变量、属性!

有成员变量、私有成员变量;
实例变量、私有实例变量;
属性变量、私有属性变量;

成员变量

关于成员变量:

  1. 是写在{ }里面的;
  2. 成员变量是不会生成get、set方法的;
  3. 包含实例变量和基本变量类型,无需与外界接触;

实例变量

实例变量,也就是可以进行实例话的变量。所以实例变量不包括基本数据类型,如int、double、float。

实例变量其实是成员变量的一种特例。所以实例变量也是类内部使用的,无需与外部接触的变量。

属性

  1. 编译器自动将变量的set和get方法的合成;
  2. 可用点语法读取,可作为变量使用,可与外界接触。

代码举例

.h:
@interface LWDCategory : NSObject { 
UIButton * _button;// 成员变量,也是实例变量 
int _totalNum; // 成员变量,不是实例变量 
} 
@property (nonatomic , strong) UIButton * button; // 属性变量 

.m:
@interface LWDCategory (){ 
UIButton * _innerButton; // 私有成员变量,也是私有实例变量 
int _innerTotalNum;// 私有成员变量,不是私有实例变量 
} 
@property (nonatomic , strong) UIButton * innerButton;// 私有属性变量 

关于私有

  1. 私有成员属性和私有属性变量是指定义在.m文件中的属性。在.m中定义的成员变量不能和它的头文件.h中的成员变量同名。
  2. 外部给成员变量赋值,只能是通过setValue:forKey和valueForKey来实现。
  3. 变量有三种权限:分别是@private、@protected、@public。
  4. 如果属性写在.m文件中就相当于@private私有属性,给其添加@public就变成公开属性。
Person内声明成员变量:
@interface Person()
{
    NSString * name;
}
@end
-----------------------------------
调用:
- (void)viewDidLoad {
    [super viewDidLoad];
  
    Person * person = [[Person alloc] init];
    [person setValue:@"lll" forKey:@"name"];
    
    NSLog(@"name:%@",[person valueForKey:@"name"]);//打印:name:lll
    
}

参考:iOS 你理解成员变量、属性、实例变量吗?
iOS开发中 类、对象、实例变量、成员变量、属性变量等区别和关系

相关文章

网友评论

      本文标题:关于成员变量、实例变量、属性

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