ios 中的构造方法(二)
在之前有简单介绍了构造方法的结构,以及构造方法的作用,那么我们现在来讨论一下:
对象的创建分为两步:+ alloc 分配内存空间和 -init 进行初始化
那么在继承自 NSObject 的类当中,我们无论怎么测试,对象不调用 init 方法,仍旧是可以进行初始化的.同时,无论怎么使用,是没有任务问题的,那么,为什么还强调,必须要调用初始化方法呢??
由于继承自 NSObject 的类,测试不出来结果,下面我采取 UI 控件的测试方法:
示例:创建了两个 view, 一个初始化,一个未初始化,对比看结果:
对比结果可以看出:未初始化的view 对象,layer 是没有分配内存地址的,也就是并没有创建 layer.
我们可以假设:因为一个 view 能够显示出来,是因为内部有一个 layer, 那么我们可以设想, layer 是 view 的一部分,所以,如果 layer 没有创建,那么 view 就不会被完整的创建出来,我们在使用未经过初始化的 view 时,添加到父控件时,就会报错,而且报的是对象提前释放的错误.
相对于 NSObject 类与 UI 控件类来说, UI控件类的复杂性非常非常高,需要初始化父类的层级也非常高,如一个 view 之所以成为一个 view, 我们可以默认它必须具备某些属性,而这些属性必须初始化为某些值,如果在使用该控件时,没有进行初始化,那么,系统可以默认该控件并没有被完整的创建,所以在使用过程中,会报错.
ios 中的构造方法(二)的更多相关文章
- ios 中的构造方法
构造方法 1.什么是构造方法? 初始化对象的方法. 默认情况下,在 OC 当中创建1个对象分为两部分(new 做的事): +alloc:分配内存空间 -init :初始化对象 2.构造方法的作用是? ...
- ios 中生成二维码和相册中识别二维码
iOS 使用CIDetector扫描相册二维码.原生扫描 原生扫描 iOS7之后,AVFoundation让我们终于可以使用原生扫描进行扫码了(二维码与条码皆可)AVFoundation可以让我们从设 ...
- Quartz 2D在ios中的使用简述二:创建画布
在iOS中使用Quartz画图时,第一步就是要获取画布(图形上下文),然后再画布上做各种操作.先看下CoreGraphics.h这个头文件,就可以知道能够创建多少种上下文类型. #include &l ...
- iOS中的二维数组
首先我们知道OC中是没有二维数组的,二维数组是通过一位数组的嵌套实现的,但是别忘了我们有字面量,实际上可以和C/C++类似的简洁地创建和使用二维数组.这里总结了创建二维数组的两种方法以及数组的访问方式 ...
- iOS中的crash防护(二)KVC造成的crash
接上篇< iOS中的crash防护(一)unrecognized selector sent to instance> 我们攻克了找不到方法实现的crash,这一篇我这里主要分析一下在 ...
- iOS音频学习笔记二:iOS SDK中与音频有关的相关框架
上层: Media Player Framework: 包含MPMoviePlayerController.MPMoviePlayerViewController.MPMusicPla ...
- iOS中数据库应用基础
iOS 数据库入门 一.数据库简介 1.什么是数据库? 数据库(Database) 是按照数据结构来组织,存储和管理数据的仓库 数据库可以分为2大种类 关系型数据库(主流) PC端 Oracle My ...
- iOS中使用正则
一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...
- iOS中多线程知识总结(一)
这一段开发中一直在处理iOS多线程的问题,但是感觉知识太散了,所以就把iOS中多线程的知识点总结了一下. 1.基本概念 1)什么是进程?进程的特性是什么? 进程是指在系统中正在运行的一个应用程序. ...
随机推荐
- CF 444A(DZY Loves Physics-低密度脂蛋白诱导子图)
A. DZY Loves Physics time limit per test 1 second memory limit per test 256 megabytes input standard ...
- 【ThinkPHP学习】ThinkPHP自己主动转义存储富文本编辑器内容导致读取出错
RT. ThinkPHP的conf文件里的Convention.php有一个配置选项 'DEFAULT_FILTER' => 'htmlspecialchars', // 默认參数过滤方法 用于 ...
- 连接时出现:Can't open display: localhost:10.0
解决方法: 在/etc/hosts 中增加 127.0.0.1 localhost ipaddress hostname 之后能进入图形界面,注意是实际ip和机器名 $(function () { $ ...
- SWFUpload的使用及其注意事项
SWFUpload的使用: 添加Jquery swfuploaad.js handler.js文件 配置参数: upload_url:文件将要被传到的处理程序 post_params:{“”: ...
- 使用 HttpWebRequest 发送模拟 POST 请求
使用HttpWebRequest发送模拟POST请求 网页中,如果form的method="POST",这时点击submit按钮可以给服务器发送了一个POST请求,如果metho ...
- Spring-----1、Spring简介和Spring3.0的变化
转载自:http://blog.csdn.net/hekewangzi/article/details/41324441
- Molecule to atoms
For a given chemical formula represented by a string, count the number of atoms of each element cont ...
- JS如何将UTC格式时间转本地格式
Date.prototype.format = function (format) { var o = { "M+": this.getMonth() + 1, //month & ...
- c语常用算法库(1)
1,冒泡排序 #include <iostream> using namespace std; int main(){ ]; // 一共n个数, n不超过1000. a用来保存这些数. , ...
- webform登录操作中正则表达式运用
关于正则表达式的运用,估计很多人都会觉得这很麻烦.确实很麻烦,太多表达式我也记不住,很多都是临时需要用的时候再去查,有点小学生读小说的架势,不认识的字再去翻字典. 正则表达式严格来说对于程序的功能实现 ...