Iphone 初始化视图控制器

Iphone 初始化视图控制器,iphone,ios,Iphone,Ios,当视图控制器首次实例化时,它通常创建或 在其生命周期中加载所需的对象。它不应该造成 与显示内容关联的视图或对象。它应该集中精力 关于数据对象和实现其他关键功能所需的对象 行为 以上内容来自iOS参考: 文档接着描述了带有情节提要的视图加载序列 我的问题是: 一, 因为视图控制器将与包含视图对象的nib文件相关联;它的“viewDidLoad”方法似乎是为在加载时配置视图对象而设计的。那么,文件的建议应该如何: “不应创建与显示内容关联的视图或对象” 被解读 二, 问题1是否与我们是否使用故事板

当视图控制器首次实例化时,它通常创建或 在其生命周期中加载所需的对象。它不应该造成 与显示内容关联的视图或对象。它应该集中精力 关于数据对象和实现其他关键功能所需的对象 行为

以上内容来自iOS参考:

文档接着描述了带有情节提要的视图加载序列

我的问题是:

一,

因为视图控制器将与包含视图对象的nib文件相关联;它的“viewDidLoad”方法似乎是为在加载时配置视图对象而设计的。那么,文件的建议应该如何:

“不应创建与显示内容关联的视图或对象”

被解读

二,


问题1是否与我们是否使用故事板有关?

我不确定是否正确理解您的问题,但我的解释如下:

  • init
    序列化和视图创建是两个独立的步骤。假设我有一个视图控制器,其表为
    IBOutlet
    ,它应该显示存储在核心数据中的配方列表。在我的初始化方法中,我将从CoreData获取数据并将其存储在数组或获取结果控制器中。我不需要表,因此我不使用
    self.view
    属性(如果还没有视图,则调用
    viewDidLoad
    )。在
    viewDidLoad
    中,我调用
    [tableView reloadData]
    重新绘制单元格,以便它们显示在控制器的初始值设定项中创建的来自我的控制器的数据

  • 我不认为这有什么关系,但故事板应该仅仅是视图控制器的支架,用单个文件替换单独的笔尖


  • 您引用的声明与移动设备的限制和设计效率有很大关系。它与故事板无关

    通过“实例化”,文档意味着
    -(id)init呼叫。发生这种情况时,控制器“准备关键数据,但不创建视图”。这意味着控制器评估xib文件,并在初始化时构造视图的内部层次表示。这个步骤只涉及RAM和CPU

    视图控制器仅在推入导航控制器或视图转换动画(即
    viewDidLoad
    启动时)时创建视图。这是因为浏览成本很高。它包括GPU和视频RAM。视频RAM比RAM要有限得多,在不需要显示的情况下,仅创建视图(VRAM中的后缓冲区)是没有效率的


    如果查看项目,应该会发现一些视图控制器正在初始化,但不需要立即显示。如果没有这样的设计,VRAM将毫无理由地快速排水。

    谢谢您的回答,@Eimantas。正如您所暗示的,文档可能意味着视图对象在视图控制器加载之前在nib文件中创建…@Stanley当视图控制器用nib实例化时,nib文件未归档到内存中。在那里,每个视图都会获得
    initWithCoder:
    awakeFromNib
    调用。然后,在连接所有插座和操作后,您将收到
    viewDidLoad
    呼叫。感谢您的友好帮助和详细回复…:)视图控制器不查看其nib,也不在init中对其求值。它在loadView中执行此操作。将视图添加到可见窗口时,数据传输到GPU,这发生在viewDidLoad返回后。@robmayoff,感谢您的输入。因此,视图控制器在初始化过程中没有做太多工作。感谢Shiming和rob在您的回答和评论中进行的详细分析。。。