iOS 几种初始化的分析比较

来源:互联网 发布:mac永恒战士2无限钻石 编辑:程序博客网 时间:2024/06/01 10:48

整天都在初始化,好几种初始化方法,今天有时间了,就来总结一下iOS中的几种常见初始化方法。

1,下边这一种是最简单的初始化,不过一定要记着,在初始化的时候一定要先调用父类的初始化。

- (instancetype)init {

    if (self = [superinit]) {

        

    }

    return self;

}

2.下边这一种也是初始化,但是这个初始化是用于视图加载nib文件,从nib中加载对象实例时,用下边的方法来初始化这些实例对象,可以是XIB中嵌套XIB,也可以是一个View或者Controller直接来拿XIB,都会调用这个方法。

- (instancetype)initWithCoder:(NSCoder *)aDecoder {

    self = [superinitWithCoder:aDecoder];

    return self;

}


3.这种就是和上边一种相反,就是在我们写的程序中没有nib文件的时候,就是用纯代码控制的视图内容,掉用下边的方法来实例化对象。

- (instancetype)initWithFrame:(CGRect)frame {

    self = [superinitWithFrame:frame];

    return self;

}

4.当对象是UIViewController的子类,那么就必须调用下边的方法调用那个NIB文件初始化自身,即使没有使用NIB文件也会调用这个方法,如果调用这个方法,并传递的两个参数为空(nil),然后类会调用-loadView去读区一个名字和对象相同的NIB文件,来初始化自身,如果没有这样的nib文件,就必须调用-setView:来设置一个self.view,或者重载loadView方法

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {

    if (self = [superinitWithNibName:nibNameOrNilbundle:nibBundleOrNil]) {

        //DO SOME INIT

    }

    return self;

}

5.自己定义初始化方法了,那样就根据自己的需要来写这个初始化的方法

- (instancetype)initWithWidth:(CGFloat)width height:(CGFloat)height ....

6.- (void)awakeFromNib方法

这个方法也是XIB中惯用的方法,不过这个不是初始化的,这个是,怎么说呢,这是当我们的XIB中约束没拉好,或者XIB中需要增加或者删除控件时,我们可以在这个方法中写约束,写增加或者减少的控件,改变Frame等。

0 0
原创粉丝点击