iOS - 官方文档阅读 - Resource Management in View Controllers


https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ViewLoadingandUnloading/ViewLoadingandUnloading.html#//apple_ref/doc/uid/TP40007457-CH10

initWithNibName:bundle:

        如果你指定NibName参数为nil,而且没有重写loadView方法,ViewController会使用其他方法来搜索nil file.
        如果使用stroyboard来定义一个viewController以及它的view的时候,绝对不要直接初始化这个类。

loadView:为controller创建view

       绝对不要直接调用这个方法。当view controller需要它的view属性但它的view是nil时,就会调用这个方法。
       如果view controller 有相关的nib file   时,这个方法会从nib file 加载view,此时,绝对不要重写这个方法。
       如果你手动用代码创建view的时候,就需要重写这个方法。

viewDidLoad: 当view controller已经加载类它当view hierarchy进内存后,就调用该方法,

   不管它是从loadView中还是nib file中加载进来的。
   你可以在这个方法中,做一些附加的初始化。

Resource Management in View Controllers

1、初始化一个视图控制器:创建或者加载它的整个生命周期都需要都对象。不应该创建它都视图层次或者用于显示的内容。
   从storyboard加载: 当你在故事板中创建一个视图控制器当时候,你在IB中配置当属性会被序列化到一个归档中。
                     接着,当视图控制器实例化后,这个归档会被加载到内存中。加载这个归档调用的是视图控制器中的
                     initWithCoder方法,当这个方法调用完成后,会接着调用awakeFromNib。awakeFromNib方法
                     是用于在需要其他对象已经实例化后执行一些配置步骤。

   使用代码来初始化视图控制器:如果一个视图控制器需要通过编码alloc它的资源,则自定义一个该视图控制器的初始化方法,
                     在这个方法中,应当调用super的init方法,然后再做一些特殊的初始化。
2、在视图控制器的view是可以访问之后,它会实例化它的View Hierarchy(视图结构)
   1)视图控制器调用loadView方法,该方法做两件事情:如果视图控制器是与故事板关联的,则从故事板中加载view;否则, 
                     会创建一个空的UIVIEW对象,并assign给视图控制器的view属性
   2)视图控制器调用viewDidLoad方法,执行其他的初始化

3、官方图片:加载view到内存中:
   

使用代码来创建一个View的方法:重写loadView方法,在该方法中,创建一个view,然后添加subView,如果使用自动布局,则为每一个view添加约束,然后将这个view赋给你的视图控制器的view 属性。
例如:
- (void)loadView
{
    CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
    UIView *contentView = [[UIView alloc] initWithFrame:applicationFrame];
    contentView.backgroundColor = [UIColor blackColor];
    self.view = contentView;
 
    levelView = [[LevelView alloc] initWithFrame:applicationFrame viewController:self];
    [self.view addSubview:levelView];
}
注意:当你重写loadView方法时,不应该调用super这样(加载行为以及浪费cpu cycle)来初始化默认的view。
自定义方式完成loadView应该做到为视图控制器创建root view & subviews。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值