(在OSX 10.9,Xcode 6.1b上开发)
如果我在AppController中声明IBOutlets,一切都很好。我在InterfaceBuilder中实例化一个对象,将它拖到表单中,然后在applicationDidFinishLaunching到达时,我的IBOutlets已经填充好了,一切都很棒。
如果我更进一步的抽象,并在InterfaceBuilder中实例化一个自定义控制器对象(NSObject的子类),并在该类中将我的对象之一声明为IBOutlet,则它们都是nil,每个都是如此。
我可以很好地设置连接,IB似乎相信它存在,'referenced outlets'列表是正确的,但它没有意义,在文档中我也找不到除
它是隐式解包的,因为在从storyboard或xib文件初始化您的类之后,您可以假定已连接出口。
嗯,我曾经那样想过。
所有我的代码都是Xcode提供的样板:
@IBOutlet weak var sceneController: NSArrayController!
我已经检查了连接,进行了双重检查和三重检查。我看了几十个iOS教程(虽然我找不到OSX的等效教程),所有这些教程似乎都是围绕“是的,你绝对可以在AppController之外的文件中声明出口,只要确保每个涉及的实例都存在”这一主题的变化。
(撰写时,“mac”文档使用了UIButton等示例)
我没有任何想法。显然,连接没有形成,可能是因为对象的实例化顺序不同于'控制器类首先,IBOutlets稍后',但是我如何强制进行这种连接?