load,initialize,initWithCoder,awakeFromNib,initWithFrame,layoutSubviews 个人总结

在百度上各位大牛的基础上,自己总结和补充了一下,有不到位的多多补充


iOS开发中几个重要的方法:

1.加载类到内存,程序刚启动的时候调用,调用在main函数之前(只会被调用一次)
+(void)load{

    

}


2.初始化类,类第一次使用的时候调用一次(只会被调用一次)

+(void)initialize{

    

}

3.首先判断控制器是否有视图,没有就调用该方法,设置控制器的根view,重写该方法后,以该方法为主,storyboard文件将不再起作用

-(void)loadView{

    

}

4.视图加载完成

-(void)viewDidLoad{

    

}

5.视图将要出现

-(void)viewWillAppear:(BOOL)animated{

    

}

6.解档方法(当控件是从xib、storyboard中创建时,就会调用这个方法)

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

    if (self = [super initWithCoder:aDecoder]) {
        //代码
    }
    return self;

}

7.加载xib完成时调用,在6之后调用。使用xib时一般我们可以在6&7两个方法里动态添加组件( 当第一次加载xib的时候就会调用这个方法,一般用来进行初始化子控件(加载子控件))

   (这个方法在initWithCoder:方法后调用,可以这么来理解:一开始经过initWithCoder创建出来的控件是死的,然后通过awakeFromNib来唤醒,所以这会有一个先后的调用顺序。)

-(void)awakeFromNib{

    

}

8.使用手码创建控件时,一般我们在该方法里动态添加组件&设置自身的一些属性。外界调用init方法,系统内部也会自动调用这个方法

  (这个方法是当控件不是从xib、storyboard中创建时,就会调用这个方法,注意和6的对比)

  (一般来说,若我们为了安全起见,初始化控件的代码我们写在一个方法里面,然后我们分别在initWithFrame和initWithCoder中都调用一下,这样就保证了无论你是通过什么方式创建的控件,代码 都能起到作用)

- (instancetype)initWithFrame:(CGRect)frame{
    if (self = [super initWithFrame:frame]) {
        //代码
    
        
    }
    
    
    
    return self;
}
9. 一般我们在这个方法里计算frame,这个方法里是控件最后一次布局子控件,这里计算最准确

-(void)layoutSubviews{

}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值