博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Objective-C 日记⑧ 对象初始化
阅读量:4325 次
发布时间:2019-06-06

本文共 1185 字,大约阅读时间需要 3 分钟。

OC中创建对象的方法有两种:

  [类名 new]

  [[类名 alloc] int]

分配和初始化是两个分离的操作:来做NSObject的类方法alloc为对象分配一块内存区域并将其清零,实例方法init用于获得一个对象并使其运行

一、分配对象

  分配:allocaton [,æləu'keiʃən] n. 分配,配置;安置从操作系统获得一块内存并将其指定为存放对象实例变量的位置

    alloc:某个类发送alloc消息时就是为该类分配一块足够大的内存,以存放该类的全部实例变量,同时alloc方法分配这块内存初始化都为0。例如:所有的BOOL类型变量初始化为NO,所有的int类型被初始化为0,所有的float类型变量被初始化为0.0,所有指针被初始化为nil。

  注意

    对象必须先分配再初始化最后才能使用

二、初始化对象

  1、初始化initialization [i,niʃəlai'zeiʃən, -li'z-] n. 初始化;赋初值 :从操作系统中取得一块内存用于存储对象(初始化)

  使用方式:

    Car *car= [[Car alloc] init];

  

  2、编写初始化方法  

-(id) init{    if(self=[super init]){        engine=[Engine new];        tires[0] =[Tires new];        tires[1]=[Tires new];        tires[2]=[Tires new];    }    return (self);}

说明:

  该声明中最新运行的是[super init],它的作用是使超类完成它们自己的初始化工作,之后使子类有机会实现初始化(如果[super init]不为nil)。最后将[super init]返回值赋给self。

  记住:这个赋值操作只会影响该init方法中self的值不会影响该方法以外的任何内容

 

三、初始化函数

定义:

  指定初始化函数:通常接受参数最多的初始化方法最终成为指定初始化函数

规则:

  1、不需要为你自己的类创建初始化函数方法

  2、如果构造一个初始化函数则一定要在你自己的指定初始化函数中调用超类的指定初始化函数

  3、如果初始化函数不止一个,则要选择一个作为初始化函数。被选定的方法应该调用超类的指定初始化函数

  

四、总结

  在初始化方法中,需要调用自己的指定初始化函数或超类指定的初始化函数。一定要将超类的初始化函数的值赋给self对象并返回给初始化方法的值。超类可能决定返回一个完全不同的对象。

转载于:https://www.cnblogs.com/PEPE/archive/2012/09/05/2672187.html

你可能感兴趣的文章
自定义滚动条
查看>>
[QT][待解决问题]对话框ui载入卡顿问题
查看>>
jquery中单选选中及清除选中状态
查看>>
APP开发手记01(app与web的困惑)
查看>>
笛卡尔遗传规划Cartesian Genetic Programming (CGP)简单理解(1)
查看>>
mysql 日期时间运算函数(转)
查看>>
初识前端作业1
查看>>
为啥程序会有bug?
查看>>
跨域技术
查看>>
JS里的居民们7-对象和数组转换
查看>>
计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值.
查看>>
python初体验
查看>>
配置vue,vue脚手架的应用(老版本)
查看>>
Start with PJSIP on windows
查看>>
【图像处理】ISP 图像传感器camera原理
查看>>
linux下防火墙iptables原理及使用
查看>>
Android 使用手机向手表安装任意.apk
查看>>
Android实时直播,一千行java搞定不依赖jni,延迟0.8至3秒,强悍移动端来袭
查看>>
无刷新上传图片 可以实时预览 选择图片后即自动上传,没有上传按钮
查看>>
DB2分区表删除和添加分区
查看>>