您的位置:首页 > 移动开发 > IOS开发

iOS 你理解成员变量、属性、实例变量吗?

2016-09-06 00:00 295 查看
你理解成员变量、属性、实例变量吗?

说明一点,成员变量与属性不一样!

首先,成员变量是写在 { } 括号内的变量。因为成员变量不会生成set、get方法所以外界无法与成员变量接触。

其次,为了方便使用,才有了属性变量。属性变量的好处就是允许让其他对象访问到该变量。通过@property创建的属性变量,系统会自动生成set、get方法。当然也可以控制只读或者只写。

最后,实例变量其实是成员变量的一种特例。实例是针对类而言,指类的声明。所以实例变量也是类内部使用的,无需与外部接触的变量。

.h文件和.m文件中变量的几条规则

1、私有成员属性和私有属性变量是指定义在.m文件中的属性。在.m中定义的成员变量不能和它的头文件.h中的成员变量同名。

2、如果在.h文件中声明的属性,外部类可以通过“类实例.属性”来调用。

3、如果在.m中声明的则不可以以上方法,只能是通过setValue:forKey和valueForKey来实现。

4、变量有三种权限:分别是@private、@protected、@public。

5、如果属性写在.m文件中就相当于@private私有属性,给其添加@public就变成公开属性。

示例代码说明

// LWDCategory.h
#import <UIKit/UIKit.h>
@interface LWDCategory : NSObject {
UIButton * _button;  // 成员变量,也是实例变量
id _obj;   // 成员变量,也是实例变量
int _totalNum;   // 成员变量,不是实例变量
}
@property (nonatomic , strong) UIButton * button; // 属性变量
@property (nonatomic , strong) id obj;  // 属性变量
@property (nonatomic , assgin) int totalNum;  // 属性变量

// LWDCategory.m
#import <UIKit/UIKit.h>
@interface LWDCategory (){
UIButton * _innerButton; // 私有成员变量,也是私有实例变量
id _innerObj;   // 私有成员变量,也是私有实例变量
int _innerTotalNum;  // 私有成员变量,不是私有实例变量
}
@property (nonatomic , strong) UIButton * innerButton;  // 私有属性变量
@property (nonatomic , strong) id innerObj;   // 私有属性变量
@property (nonatomic , assgin) int innerTotalNum;   // 私有属性变量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: