gpt4 book ai didi

macos - IBOutlet 何时初始化?

转载 作者:行者123 更新时间:2023-12-03 16:10:08 32 4
gpt4 key购买 nike

我通过 Interface Builder 设置了 TextView 的导出。 TextView 加载正常,但是我无法以编程方式访问它的任何属性,因为导出始终为 nil。

什么时候实例化?即使在调用我的 applicationDidFinishLoading 后,它仍然不是“事件的”或未归档。

最佳答案

socket 不会实例化,因为 socket 是变量(或属性)。

Nib 中的对象在加载 Nib 时被实例化,并且在创建对象之后但在将 awakeFromNib 发送到所有相关对象之前,它们会尽可能立即分配给每个 socket .

换句话说, Nib 加载按以下顺序执行以下所有操作:

  1. 创建或重新创建存储在 Nib 中的所有对象。 (这不包括文件所有者、第一响应者以及其他外部和虚构对象。)
  2. 将 Nib 中连接的每个 socket 属性设置为 Nib 所连接到的同一 Nib 中的对象。 (例如: View Controller 的 view 导出到顶级 View 。)
  3. awakeFromNib 发送到 Nib 中的对象,并且(在 Cocoa 中)也发送到文件的所有者(例如,窗口 Controller )。

#2 回答了你的问题。

The Resource Programming Guide has more information 。 Cocoa 和 Cocoa Touch 之间的细节略有不同,特别是关于哪些对象会发送 awakeFromNib 消息,哪些不会。

When does it instantiate? Even after my applicationDidFinishLoading gets called, it's still not "alive" or unarchived.

TextView 不是吗?

可能是这样,只是您没有连接 socket 。在 Nib 中检查这一点。

另一种可能性:您在另一个 Nib 中创建了 TextView ,而不是在创建应用程序委托(delegate)的 Nib 中创建了 TextView (如果您甚至在 Nib 中创建了应用程序委托(delegate)),并且您没有将 View 连接到 socket 正确的对象。也许您在 TextView 的 Nib 中创建了第二个应用程序委托(delegate);此应用程序委托(delegate)实际上并不是应用程序的委托(delegate),这就是为什么真正的应用程序委托(delegate)看不到 TextView - 您将 TextView 提供给了冒名顶替者,而不是真正的 McCoy。

关于macos - IBOutlet 何时初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16133931/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com