如果我执行以下操作:
- 创建基于文档的应用程序项目;
- 创建一个继承自NSView的类,我称之为CustomView;
- 将一个视图拖入document.xib并将其设置为CustomView;
- 将视图与文档连接,使用我称之为customView的插座;
- 在文档中添加IBAction,我称之为Foo;
- 将mainmenu.xib文件中的此IBAction连接到菜单项;
然后在IBAction内部所有出口都是零:
- (IBAction) Foo: (id) sender
{
NSLog(@"%p",customView);
}
打印0x0 所有IBOutlets都会出现问题,并且只有当IBAction与菜单项链接时才会出现问题。如果我尝试打印实例变量,它们具有正确的值。
答案 0 :(得分:3)
不要在Document
中创建新的MainMenu.xib
对象,因为所有这一切都会创建一个全新的Document
对象,该对象与实际Document
无关。你正在打开(因此,customView
的零值。)
要使用Document
获取活动customView
对象,请将菜单项与指定的IBAction
连接到First Responder
- AppKit会自动传递操作消息如果没有其他响应者处理它,则将链链接到活动Document
子类。也许请阅读事件处理文档中的“操作消息”:(reference)。