gpt4 book ai didi

objective-c - 为什么基于文档的应用程序 IBActions 中的 IBOutlets 为零?

转载 作者:行者123 更新时间:2023-12-04 05:36:53 25 4
gpt4 key购买 nike

如果我执行以下操作:
- 创建一个基于文档的应用项目;
- 创建一个继承自 NSView 的类,我将称之为 CustomView;
- 将一个 View 拖入 document.xib 并将其类设置为 CustomView;
- 将 View 与文档连接起来,使用一个我称之为 customView 的 socket ;
- 在文档中添加一个 IBAction,我将其称为 Foo;
- 将 mainmenu.xib 文件中的这个 IBAction 连接到一个菜单项;

然后在 IBAction 中,所有导出都为零:

- (IBAction) Foo: (id) sender
{
NSLog(@"%p",customView);
}

它打印 0x0。
所有 IBOutlets 都会出现问题,并且仅当 IBAction 与菜单项链接时。如果我尝试打印实例变量,则它们具有正确的值。

最佳答案

不要新建 Document对象在 MainMenu.xib ,因为所做的只是创建一个全新的 Document与实际无关的对象 Document s 您正在打开(因此,零值 customView )。

获取事件 Document对象与 customView ,而是将菜单项与您指定的 IBAction 连接起来到 First Responder - AppKit 自动将 Action 消息向上传递到事件链 Document如果没有其他响应者处理它,则子类化。也许阅读事件处理文档中的“操作消息”:( reference )。

关于objective-c - 为什么基于文档的应用程序 IBActions 中的 IBOutlets 为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11817620/

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