了解绑定到核心数据存储的阵列控制器何时完成加载其内容的最佳方法是什么?
我有一些方法(即 awakeFromNib)依赖于具有其内容的数组控制器,但大多数时候,当在该对象上调用 awakeFromNib 时,数组控制器还没有其内容。
我想延迟我的行动,直到我知道控制器拥有它的所有内容。
了解绑定到核心数据存储的阵列控制器何时完成加载其内容的最佳方法是什么?
我有一些方法(即 awakeFromNib)依赖于具有其内容的数组控制器,但大多数时候,当在该对象上调用 awakeFromNib 时,数组控制器还没有其内容。
我想延迟我的行动,直到我知道控制器拥有它的所有内容。
将代码移到-windowDidLoad
通常是一个安全的选择,它是在窗口完全加载后调用的,-awakeFromNib
而不是你可能遇到问题的地方,因为在你的 nib 中的所有对象上调用它的顺序没有定义。
一般来说,最好记下您正在执行的所有初始化、哪些部分需要 UI 才能正常工作、哪些部分可以延迟到用户执行操作等。例如,最好将诸如获取核心数据之类的任务延迟到最后一分钟,以防您有一个窗口在用户请求之前没有打开。另一方面,有时您将使用像大纲视图这样的对象,该对象需要预先填充其数据源以使持久性方法起作用。
一旦你知道你在做什么以及需要按照什么顺序完成,你可以选择一些 init、awakeFromNib、yyyWillLoad 或 xxxDidLoad 的组合,你会在他们有机会之前处理很多这样的错误造成麻烦。
有关此问题的讨论,请参见Theocacao