**浅述IOS成员变量(Member variables)和实例变量(Instance varialbes)的区别**
来源:互联网 发布:镇江淘宝模特兼职招聘 编辑:程序博客网 时间:2024/06/08 18:24
1,Member variables 可以声明在.h 和.m 中有一定的作用域 。成员变量默认外部访问不到,子类要访问,就要在h文件中申明。
OC属性在h文件中和在m文件中声明是有区别的。区别就是,在h文件中声明的属性,外部类可以通过“类实例.属性”来调用,但在m文件中声明的则不可以获取setter and getter方法,只能是通过setValue:forKey和valueForKey来实现。
位于h声明文件中的变量(deafult @protected)
#import <UIKit/UIKit.h>
@interface CurrentDetailViewController : BaseViewController{
//括号里边的都属于成员变量
ProductDetails *myProductDetails;
float cellH;
int cellCount;
UITapGestureRecognizer*singleRecognizer;
*//另外一种情况 在外部可以使用->调用*
@private 私有
NSString private;
@protected 默认
NSString protected;
@public 公开
NSString public;
@package 一般很少用(对于framework内部相当于protected 对于framework外部相当于private)
NSString package;
}
//实例变量(属性)
@property (strong, nonatomic) NSString * productCode;
@property (strong, nonatomic) NSString * productName;
@property (strong, nonatomic) NSString * sellOrderNo;
@end
**//位于m实现文件中的变量(deafult @private)**
@interface RegularDetailViewController ()
{
ProductDetails *myProductDetails;
float cellH;
int cellCount;
}
@property (strong, nonatomic) UITableView *myTableView;
@property (strong, nonatomic) UILabel *labelShow;
@property (strong, nonatomic) UIView *buyView;
@property (strong, nonatomic) UIButton *buyBtn;
@property (strong, nonatomic) BaseWebViewController *baseWeb;
@end
@implementation RegularDetailViewController
- (void)viewDidLoad {
//调用例子
CurrentDetailViewController *currentDetailViewController = [[CurrentDetailViewController alloc]init];
CurrentDetailViewController ->public = @"";
CurrentDetailViewController ->private = @"";
CurrentDetailViewController ->protected = @"";
CurrentDetailViewController ->package = @"";
}
@end
2,Instance varialbes OC里边的属性 其实就是实例变量。属性默认只能是对象形式存在。像 int count; 就是一个成员变量。 而 NSString * name; 是一个实例变量。通俗点就是基本数据类型和构造类型不能被称之为实例变量。
至于 id date/data 应该属于成员变量还是实例变量呢? 因为 id 是 OC特有的泛型指针类型。从本质上讲, id 等同于 (void *)。
所以 id date/data 应属于 实例变量。
需要注意的是
成员变量,有四种权限,就是大家都知道的@private、@protected、@public 、@package 写在.m文件中时,相当于是@private权限,子类无法访问。
而写在.h文件中,默认是@protected权限,子类可以访问,可以做权限修改。
因为访问权限指针指向.h文件。.h文件中成员变量,外部实例对象对其的调用,跟C++一样,用->来调用。
有理解不到位的地方欢迎大家指出!!!
- **浅述IOS成员变量(Member variables)和实例变量(Instance varialbes)的区别**
- 009.Member variable 实例变量(成员变量)
- 009.Member variable 实例变量(成员变量)
- C++类模板中静态成员变量的隐式实例化问题(Implicit initialization of static member variables for template classes)
- iOS 成员变量,实例变量,属性变量的区别,联系
- 成员变量:类变量和实例变量的区别
- 成员变量(实例变量,类变量) 局部变量 的区别
- OC基础:实例变量和成员变量的区别
- iOS 成员变量和属性的区别
- 成员变量,局部变量,实例变量,类变量的区别
- 实例变量与成员变量的区别
- IOS开发中 类、对象、实例变量、成员变量、属性变量等区别和关系
- 成员变量和局部变量 (静态变量)类变量和实例变量
- 类的成员变量和实例变量
- ios 属性和实例变量的区别
- ios 属性和实例变量的区别
- iOS的成员变量、实例变量、属性变量
- 多态的好处和弊端案例(成员变量,成员函数,静态成员函数,接口)会用到instance
- bfs模板
- How to get file name when user select a file via <input type=“file” />?
- codeforce #200 div2 的水题三道
- N!
- DCE中从linux sendto转换为dce的关节部分
- **浅述IOS成员变量(Member variables)和实例变量(Instance varialbes)的区别**
- WPF Layout 系统概述——Measure
- vmware workstation
- UDP简单通讯
- 日经春秋 20150811
- 安卓开发多文件上传Spring MVC作为服务器端
- 关于如何在Windows上生成dll库
- 打印保持到文件
- 黑马程序员--java技术blog---第一篇:其他对象