ios 中的构造方法(二)

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

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

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

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

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

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

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

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

posted @ 2016-01-12 12:36  晒太阳的仙人掌  阅读(220)  评论(0编辑  收藏  举报