'viewDidLoad'未在NSViewController中声明?

时间:2014-10-13 17:29:56

标签: objective-c macos cocoa nsviewcontroller

我是一个可可和Objective-c新手。 我正在尝试构建一个mac应用程序,当我尝试创建一个继承自NSViewController的新控制器时,它会自动在.m文件中给出- (void)viewDidLoad(但不在.h中)。问题是编译器总是大声说'#34;没有可见的@interface为' NSViewContoller'声明选择器' viewDidLoad'。

这怎么可能?请帮助我了解这里发生了什么以及如何解决它。 谢谢。

2 个答案:

答案 0 :(得分:5)

如果您定位OSX Yosemite及以上,则仅在NSViewController中支持ViewDidLoad!如果您针对的是应用程序定位在Yosemite下方,请使用-awakeFromNib-loadView方法删除它。

正如您在Apple's NSViewController Reference 中看到的那样 它是

Available in OS X v10.10 and later.

P.S这发生在我为OSX Mevericks及以上开发应用程序时,我从NSViewController继承了一个类,Xcode 6为我自动生成了ViewDidLoad方法,这实际上是一个bug(我想)

答案 1 :(得分:-2)

来自apple的文档,方法NSViewDidLoad

  

“对于源自nib文件的视图控制器,此方法是   在设置view属性后立即调用。对于一个观点   以编程方式创建控制器,立即调用此方法   在loadView方法完成之后。“

您需要在.h中创建一个方法,以便在您的应用中进行查看。