OC-对象初始化问题
2016-07-03 21:05
267 查看
OC中对象的初始化包含两个方面:
(1)给对象的内存空间中储存的实例变量赋初值;
(2)给指针赋初值,使得指针指向对象。
下面用例子来说明:
Person *XiaoMing;//此时XiaoMing这个指针是nil,还未被初始化
XiaoMing=[[Personalloc]initWithName:@"Xiao
Ming"Age:18Sex:maleHeight:172.0Weight:53.0];
-(id)initWithName:(NSString *)n Age:(int)a Sex:(Sex)s Height:(float)h
Weight:(float)w
{
if (self=[super init]) {
name=n;
age=a;
sex=s;
height=h;
weight=w;
}
return self;
}
这个语句同时完成了对象实例变量的初始化和指针的初始化,下面来看这个语句的具体操作流程:
1.[Person alloc]就是在堆上分配一段内存空间用于储存Person类的实例对象,也就是说这里创建了一个Person类的实例对象;
2.initWithName:@"Xiao
Ming" Age:18 Sex:male Height:172.0 Weight:53.0在完成对象实例变量初始化的同时,返回一个self指针,此时的self指针是指向Person类的实例对象,然后将self指针赋给XiaoMing指针,所以XiaoMing指针也指向Person类的实例对象。
*注:oc中的指针有两层含义,既代表指针本身又代表指针的引用,也就是说当它是指针(地址)本身的时候,它是指向对象的,当它是指针引用的时候,它就代表对象本身,这是跟c语音不一样的,在c中指针的引用要在指针前面加一个“*”号。
(1)给对象的内存空间中储存的实例变量赋初值;
(2)给指针赋初值,使得指针指向对象。
下面用例子来说明:
Person *XiaoMing;//此时XiaoMing这个指针是nil,还未被初始化
XiaoMing=[[Personalloc]initWithName:@"Xiao
Ming"Age:18Sex:maleHeight:172.0Weight:53.0];
-(id)initWithName:(NSString *)n Age:(int)a Sex:(Sex)s Height:(float)h
Weight:(float)w
{
if (self=[super init]) {
name=n;
age=a;
sex=s;
height=h;
weight=w;
}
return self;
}
这个语句同时完成了对象实例变量的初始化和指针的初始化,下面来看这个语句的具体操作流程:
1.[Person alloc]就是在堆上分配一段内存空间用于储存Person类的实例对象,也就是说这里创建了一个Person类的实例对象;
2.initWithName:@"Xiao
Ming" Age:18 Sex:male Height:172.0 Weight:53.0在完成对象实例变量初始化的同时,返回一个self指针,此时的self指针是指向Person类的实例对象,然后将self指针赋给XiaoMing指针,所以XiaoMing指针也指向Person类的实例对象。
*注:oc中的指针有两层含义,既代表指针本身又代表指针的引用,也就是说当它是指针(地址)本身的时候,它是指向对象的,当它是指针引用的时候,它就代表对象本身,这是跟c语音不一样的,在c中指针的引用要在指针前面加一个“*”号。
相关文章推荐
- 比较好的图像去噪算法
- java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Integer
- Qt中添加OpenCV库
- 其他--mac上ndk环境配置
- leetcode 368. Largest Divisible Subset
- Mysql中的自定义函数和自定义过程
- 原型链
- SVN使用说明
- 有趣的图像处理算法
- 快速排序的实现--挖坑法
- virtualbox 安装centos系统,设置双网卡实现虚拟机上网及主宿互访
- 软工课设第一周周末 7.1&7.2&7.3
- 压力测试之TCPP
- Activity生命周期测试结果分析
- Docker学习笔记
- ELK日志服务器的快速搭建并收集nginx日志 推荐
- 【一天一道LeetCode】#115. Distinct Subsequences
- 斐波那契数列
- ACM课程总结
- 【一天一道LeetCode】#115. Distinct Subsequences