gpt4 book ai didi

objective-c - XIB 文件内对象的多个实例

转载 作者:行者123 更新时间:2023-12-03 17:55:28 26 4
gpt4 key购买 nike

我有一个基于文档的应用程序,具有推荐的 NSDocument/NSWindowController 设置。每个窗口都有自己的 NSWindowController 实例和关联的 XIB 文件。该界面在 -(id)init 中非常直接地加载:if (self = [super initWithWindowNibName:@"DocumentWindow"]) {//yadda yadda }。 XIB 文件包含一个对象,该对象代表一个单独的 Controller ,每次用户打开新窗口时都应实例化该 Controller 。它提供仅与当前文档相关的数据。当我使用 -(id)initWithWindowNibName: 解压对象时,尽管有两个不同的窗口 Controller 并且调用了 -(id)initWithWindowNibName:,但我总是获得对同一实例的引用> 两次。 XIB 加载机制似乎只解压相同的存档对象一次,这是有意义的(真的吗?)。

除了在代码中分配单独的对象,手动加载 View ,计算它们的大小,将它们添加为 subview ,然后设置绑定(bind)并在窗口关闭时手动解除绑定(bind)之外,还有什么办法吗?

因为我自己的愚蠢,我正在用头撞墙。它只会让事情变得更糟。

最佳答案

正如我最初认为的那样,我绝对走错了路。问题很简单,我在前面提到的实例化类中为一个对象注册了一个通知,该对象是应用程序的 keyWindow 的 subview (我将其组合在一起并希望稍后将其更改为属性,哎哟)。当应用程序加载时,为所有文档窗口注册的所有实例都得到通知并计算相同的数据。

调试器是我今天最好的 friend 。

当您从 XIB 中取消归档对象时,实际上没有什么比优化更好的了,并且您将始终获得不同的实例(回想起来,这绝对有意义)。如果您遇到类似的问题,那么它可能是代码中其他位置的不相关错误。

关于objective-c - XIB 文件内对象的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14403279/

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