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

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

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

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

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

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

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

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

最新文章

  1. HTML 的 meta 标签
  2. 自学C++第一天
  3. JMS与MQ详解(有项目)
  4. 智能车学习(二十一)——浅谈CCD交叉以及横线摆放
  5. [转]ASP.NET MVC Json()处理大数据异常解决方法 json maxjsonlength
  6. Python socket进阶 多线程/进程
  7. android studio adb
  8. STL Container和ATL智能包裹类的冲突
  9. Codeforces Round #291 (Div. 2) C - Watto and Mechanism 字符串
  10. M_LROOT,LD_LIBRARY_PATH, “Not all extension Dlls were loaded”问题原因及解决方法(持续更新)
  11. VB高清图标制作方法
  12. OpenCV学习(20) grabcut分割算法
  13. 分享两个网址,一个是使用mssql自带的跟踪工具和分析工具
  14. 栈的实现Java
  15. span是没有value标签的,要向获得标签内部的值改怎么办。
  16. Delphi关于ADO控件的简单使用
  17. DevExpress控件库 开发使用经验总结1 DevExpress简介、安装、使用
  18. 【运维】Dell R710如何开启VT服务
  19. Youtube-dl 配置 使用方法 + 配合aria2 多线程 下载 + 配合 ffmpeg 自动合并分段视频
  20. PHP filter 函数FILTER_CALLBACK 过滤数据

热门文章

  1. Windows下通过脚本快速修改IP地址
  2. Java中的import
  3. 编程算法 - 最长上升子序列问题 代码(C)
  4. javascript模式——Mixin
  5. css系列教程--border和background
  6. S5700交换机配置端口镜像
  7. 反编译C#的dll文件并修改,再重新生成dll
  8. Inno Setup教程
  9. Javascript 拖拽雏形中的一些问题——逐行分析代码,让你轻松了解拖拽的原理
  10. web2py官方文档翻译01