initWithFrame&initWithCoder的

2017-08-18  本文已影响5人  猪队友小L

万能初始化函数

所有初始化方法都会最终的调用两个方法来初始化

  1. initWithFrame:通过代码创建的View最终都会调用这个

  2. initWtthCoder:通过文件创建的最终都会调用这个

init调用的哪个

init属于通过代码创建View,会去调用initWithFrame:frame,其中frame为(0,0,0,0)

通过文件创建的是什么

通过文件创建是指xib和storyboard的initWithNibName

调用顺序是initWithNibName先调用awakeFromNib,然后awakeFromNib会去从本地文件进行unarchive(解档),unarchvie会去调用initWtthCoder

通过文件创建的实质

通过文件创建实质是加载了本地文件,进行了一系列的解压缩(unarchive 解档)操作,所以说才触发了解档函数initWtthCoder

堵死一个View的初始化

如果要堵死初始化,只需要在自定义View里重写好initWithFrame&initWithCoder就可以了,不管是如何创建

initWithCoder的常规用途

因为实质是解档功能,所以initWithCoder两个用处:

  1. 只在xib和storyboard时,会在加载完视图后执行
  2. 归档解挡时重写 所以一般和encoder只用于重写 不用于调用
上一篇下一篇

猜你喜欢

热点阅读