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)什么是进程?进程的特性是什么? 进程是指在系统中正在运行的一个应用程序. ...
随机推荐
- MS Sql 查询数据库连接数
SELECT * FROM [Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN (SELECT [DBID]FROM [Master].[dbo].[SYSDA ...
- ARM上的linux如何实现无线网卡的冷插拔和热插拔
ARM上的linux如何实现无线网卡的冷插拔和热插拔 fulinux 凌云实验室 1. 冷插拔 如果在系统上电之前就将RT2070/RT3070芯片的无线网卡(以下简称wlan)插上,即冷插拔.我们通 ...
- 2014 ACM省赛总结
今年ACM省赛已经过去一个星期左右了,2年的ACM训练是该做个总结了,因为前几日去參加蓝桥杯总决赛,所以没来的及写总结,如今在这小小总结一下吧-- 依晰记得去年省赛时候的样子,如今感觉那时像是个无知的 ...
- XP用户:消除误解,大胆拥抱Linux
4月23日.知名家评论家Silviu Stahie发表文章.题为"Windows Users and Their Misconceptions About Linux". ...
- Sublime 学习记录(四) Alignment 插件
1) Alignment 插件的安装 打开命令面板 输入pci 回车 输入Alignment 回车安装好即可 2) Alignment 用处 用于代码对齐 3) Alignment 快捷键 默认为 ...
- Dom0级事件
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- iOS 键盘弹出遮挡输入框
#pragma mark 键盘弹出遮挡输入框 //开始编辑输入框的时候,软键盘出现,执行此事件 -(void)textFieldDidBeginEditing:(UITextField *)textF ...
- git工作区和暂存区
工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区: 版本库(Repository) 工作区有一个隐藏目录.git,这个不算工作区, ...
- 启动程序的c++方法
#include <Windows.h> void main() { WinExec( "notepad.exe fitdata.txt", SW_SHOW ); // ...
- distance.c
#include "stdio.h" #include "string.h" #include "math.h" #include &quo ...