swift 中 awakeFromNib() 和 viewDidLoad() 之间的区别

Posted

技术标签:

【中文标题】swift 中 awakeFromNib() 和 viewDidLoad() 之间的区别【英文标题】:difference between awakeFromNib() and viewDidLoad() in swift 【发布时间】:2015-08-13 15:55:59 【问题描述】:

我想知道 awakeFromNib() 和 viewDidLoad() 之间的主要区别,以便更清楚地了解它的工作原理。谁能解释一下?

【问题讨论】:

Which should I use, -awakeFromNib or -viewDidLoad?的可能重复 Explain awakeFromNib, initwithFrame usage的可能重复 【参考方案1】:

来自 Apple 文档:

awakeFromNib

nib 加载基础架构向从 nib 存档重新创建的每个对象发送 awakeFromNib 消息,但前提是存档中的所有对象都已加载和初始化。当一个对象收到一个 awakeFromNib 消息时,它保证已经建立了它的所有出口和动作连接。

见:Nib Files in Resource Programming Guide

viewDidLoad:

在视图控制器将其视图层次结构加载到内存后调用此方法。无论视图层次结构是从 nib 文件加载还是在 loadView 方法中以编程方式创建,都会调用此方法。您通常会覆盖此方法以对从 nib 文件加载的视图执行额外的初始化。

【讨论】:

所以 awakeFromNib 甚至在 viewDidLoad 之前就被调用了? 注意awakeFromNib:可能不会被调用。 那么对于这个问题 (***.com/questions/36673624/…),awakeFromNib 是操纵 IB 网点的正确位置吗?基本上,问题是如果 not 使用自定义 XIB,您在哪里初始化 UICollectionViewCell 的插座?

以上是关于swift 中 awakeFromNib() 和 viewDidLoad() 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

init 和 awakeFromNib

Swift交替UITableViewCell渐变颜色

目标 C:init 和 awakeFromNib

awakeFromNib 啥时候被调用?

Swift:通过扩展更新 UIViewController 插图

iOS 9 中未调用 awakeFromNib