gpt4 book ai didi

objective-c - awakeFromNib 之后 NSWindow 为零

转载 作者:行者123 更新时间:2023-12-03 17:06:07 60 4
gpt4 key购买 nike

我有一个 nib 文件,其中包含一堆 View 和自定义对象。这些对象之一是自定义 Controller 对象。在它的 awakeFromNib 方法中,我想访问保存所有这些内容的窗口。我现在不知道如何获得窗口。然而,这个自定义对象有一个 View 的导出。我知道您可以通过调用 [nameOfView window] 来获取窗口,但由于某种原因,此时窗口将返回 nil,即使 View 不是 nil。窗口什么时候会非零?

顺便说一句,如果我将窗口作为参数传递给从 nib 文件加载的自定义对象,我是否需要担心释放/保留它?从 Nib 加载的对象中的内存管理将如何与此 NSWindow 一起工作?

最佳答案

如果我理解正确的话,你将无法在 Nib 加载过程中执行此操作:

  1. 某个 Controller (我们称之为主 Controller )触发该 nib 文件的加载;
  2. awakeFromNib 被发送到 nib 文件内的对象,包括您的自定义 Controller 对象;
  3. 主 Controller 获取对 nameOfView 的引用(可能通过自定义 Controller )并将其添加到窗口的 View 层次结构中。

加载包含 View 的 nib 文件不会自动将这些 View 添加到窗口的 View 层次结构中,这就是为什么 [nameOfView window] 返回 nil 您的自定义 Controller 的awakeFromNib 实现。由于在步骤 1 中有一个主 Controller 负责触发该 nib 文件的加载,因此我假设该主 Controller 负责向窗口添加 View 。当发生这种情况时,让主 Controller 向自定义 Controller 发送消息,以便您的自定义 Controller 知道 nameOfView 何时已添加到窗口。

关于objective-c - awakeFromNib 之后 NSWindow 为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7799583/

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