initwithcoder和 initwithframe的区别

对于loadView和ViewDidLoad 之前的项目都会用到,但是initWithNibName/awakeFromNib/initWithCoder放在一起,还真是让我头疼,下面就写一下记录一下自己的学习心得,如果有不对的地方,请大牛们指出,小弟不胜感激。。。

首先区别一下程序化初始viewController,半程序初始化与IB初始化的区别                                    1. 代码初始化:完全没有Xib之类的文件,通过纯代码实现加载                                                    2.半代码化:设计Xib,然后在程序中用代码调用Xib来进行初始化                                                  3.完全XIB化,设计xib之类,然后加入到其他XIB里面,

下边就是各个方法的使用:                                                                                                             1. viewDidLoad:这个方法在上面的三种方式下都会调用,而且是加载完View后调用                     2. loadView: 代码初始化程序时设计view用,半代码化时和完全IB化初始时也会调用,但会在initWithNibName之后,ViewDidLoad之前                                                                                       3.initWithNibName 半代码化初始时使用,完全IB初始化的时候不调用,UIViewConrtoller代码初始化时会通过init调用,而且调用在[super init]中                                                                        4.awakeFromNib :这个方法是一个类在IB中被实例化时被调用的,不过很多人都推荐使用viewDidlaod而不要使用awakeFromNib,应该是因为awakerFromNib 只会当从NIb文件中unarchive的时候才会被调用一次,而viewDidLoad会被调用多次,实际应用中会发现当一个类的awakeFrormNib被调用的时候,那么这个类的viewDidLoad就不会被调用,                             5. initWithCode:是一个类半代码化实例时被调用的,比如:通过IB创建一个Controller的nib文件,然后在Xcode中,通过initWIithNIbName来实例化这个Controller,那么这个controller的initWithCode会被调用

推荐阅读更多精彩内容