【发布时间】:2015-01-01 21:55:36
【问题描述】:
我是一名 iOS 开发人员,正在尝试了解 iOS 和 MacOS 之间的区别。
我有一个非常简单的 OSX 应用程序,在 Yosemite 上运行良好,但在 Mavericks 上,-viewDidLoad 和其他 viewController 方法没有被调用,我最终得到一个空视图。
我想我的主要问题是,什么在 Mavericks 中不可用并且在 Yosemite 中阻止这样一个基本的代码运行? Mavericks 是否有可能不像 Yosemite 那样支持 NSViewControllers?
代码如下:
- (void)setupViewController
{
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.contentView = self.viewController.view;
self.viewController.view.frame = ((NSView*)self.window.contentView).bounds;
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Insert code here to initialize your application
if (self.viewController == nil)
[self setupViewController];
[self.window makeKeyAndOrderFront:self];
}
应用程序设置有 MainMenu.xib,其中包含应用程序窗口(以及附加到该窗口的视图,我在上面的代码中替换了该视图)。还有一个 ViewControler.xib 包含我的主视图。
我该怎么做才能让这个应用程序在 Mavericks 上运行?
更新:看起来 NSViewController 在优胜美地之前没有 viewDidLoad 等。那么,我怎样才能最好地实现同时适用于 Mavericks 和 Yosemite 的东西?
【问题讨论】:
-
10.9,
awakeFromNib是适合设置的地方。 -
@bluedome:有效!你为什么不把它放在答案中,我会选择它作为正确的答案?
-
你是对的。我会这样做的。