首页 > 移动平台 > 详细

ios 中的构造方法(二)

时间:2016-01-12 13:43:30      阅读:213      评论:0      收藏:0      [点我收藏+]

在之前有简单介绍了构造方法的结构,以及构造方法的作用,那么我们现在来讨论一下:

对象的创建分为两步:+ alloc 分配内存空间和 -init 进行初始化

那么在继承自 NSObject 的类当中,我们无论怎么测试,对象不调用 init 方法,仍旧是可以进行初始化的.同时,无论怎么使用,是没有任务问题的,那么,为什么还强调,必须要调用初始化方法呢??

由于继承自 NSObject 的类,测试不出来结果,下面我采取 UI 控件的测试方法:

示例:创建了两个 view, 一个初始化,一个未初始化,对比看结果:

技术分享技术分享

对比结果可以看出:未初始化的view 对象,layer 是没有分配内存地址的,也就是并没有创建 layer.

 我们可以假设:因为一个 view 能够显示出来,是因为内部有一个 layer, 那么我们可以设想, layer 是 view 的一部分,所以,如果 layer 没有创建,那么 view 就不会被完整的创建出来,我们在使用未经过初始化的 view 时,添加到父控件时,就会报错,而且报的是对象提前释放的错误.

技术分享

相对于 NSObject 类与 UI 控件类来说, UI控件类的复杂性非常非常高,需要初始化父类的层级也非常高,如一个 view 之所以成为一个 view, 我们可以默认它必须具备某些属性,而这些属性必须初始化为某些值,如果在使用该控件时,没有进行初始化,那么,系统可以默认该控件并没有被完整的创建,所以在使用过程中,会报错.

ios 中的构造方法(二)

原文:http://www.cnblogs.com/sleepingSun/p/5123955.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!