我希望别人之前遇到过这个问题。
在Xcode Cocoa Application项目中,我使用单个视图和一些随机子视图创建一个* .xib文件。我创建了一个* ViewController.m并从NSViewController
继承。我将* .xib中的文件所有者设置为我的控制器,并将出口视图设置为主视图。然后,我在AppDelegate
的{{1}}中创建一个新的控制器实例,并将其视图作为子项添加到applicationDidFinishLaunching:
。
这是奇怪的部分......这在一个新的Xcode Cocoa项目中工作得很好。 * .xib中的视图按预期添加到主窗口中。然而,在我正在进行的项目中,无论我做什么,我都会self.window.contentView
。在这个项目的某个时间点,它现在每次都会出错。我甚至还从旧的Git提交中恢复了整个回购!我假设我看到了Xcode错误?
编辑更多信息: 这似乎与将项目作为另一个Xcode项目的子项相关联。如果我单独打开项目(而不是父项目),它将按预期运行。
答案 0 :(得分:6)
我遇到了类似的问题:我写了一个ViewController,然后添加了一个xib并在那里更改了File的所有者。然后我在MainMenu.xib中添加了一个ViewController对象,并将该对象的Custom Class更改为我的ViewController。 我忘了什么以及导致相同异常的原因:在MainMenu.xib中我必须单击ViewController对象,在Attributes Inspector中我需要指定在创建ViewController时应该加载的Nib Name。可悲的是,Xcode需要重新启动才能获得我的更改 无论如何,我希望这可以帮助每个检查每个视图连接两次但仍然有例外的人。
答案 1 :(得分:0)
虽然没有解释为什么会发生这种情况,但我发现了如何解决这个问题。我将整个项目更改为工作区,我的运行时错误消失了。最初它是一个父项目,有2个孩子项目。
答案 2 :(得分:0)
很清楚这段代码应该有效。 我做了一个简单的实验。 我只是为该特定项目重新创建了xib,问题就消失了。
所以恕我直言这是苹果的一个错误。 我确实有很长的名单在这里和那里堆积。 ...
这一切都是在我注意到NSCollectionView上的性能非常慢之后才开始的,最初我将这些单元格放到了自己的nib中,但是看起来这不再需要了,因为你可以在与NSCollectionView相同的xib中定义自定义NSCollectionViewItem 。 然后Cocoa将调用copyWithZone:并且没问题。
我想我的错是因为没有适应Apple的一些新模式。