如何在Xcode 4.6.1中使用viewDidLoad
或appDidBecomeActive
等功能,这些功能只适用于OSX 10.10及以上版本。请提供使用这些函数的替代方法。
如何在Xcode 4.6.1中使用viewDidLoad
或appDidBecomeActive
等功能,这些功能只适用于OSX 10.10及以上版本。请提供使用这些函数的替代方法。
扩展Ken Thomas的评论; 这是我使用的代码:
- (void)loadView
{
[super loadView];
// if we're running on 10.8 or older…
if (NSAppKitVersionNumber <= NSAppKitVersionNumber10_8) {
[self viewDidLoad]; // call viewDidLoad (added in 10.9)
}
}
//
// This will be called by loadView pre-10.9; directly otherwise
//
- (void)viewDidLoad {
// --- YOUR CODE HERE ---
} // viewDidLoad
[super viewDidLoad];
有什么理由吗? - ATVNSAppKitVersionNumber <= NSAppKitVersionNumber10_9
吗?因为头文件表明 viewDidLoad
直到 10.10 才被添加。 - spinacherif (![NSViewController instancesRespondToSelector:@selector(viewDidLoad)])…
。 - spinacher我会重写setView方法
@interface MyViewController : NSViewController
@end
@implementation MyViewController
- (void)setView:(NSView*)v {
super.view = v;
// if we're running on 10.8 or older…
if (NSAppKitVersionNumber <= NSAppKitVersionNumber10_8) {
[self viewDidLoad]; // call viewDidLoad (added in 10.9)
}
}
@end
-viewDidLoad
的重写,而是重写-loadView
。调用super
然后在其后添加任何其他代码。这就是有效的“view-did-load”代码。至于appDidBecomeActive
,它似乎不是 Cocoa API 的一部分。你在哪里找到的? - Ken ThomasesappDidBecomeActive
时,你是指applicationDidBecomeActive:
吗?这已经是自从 OS X 10.0 版本以来的一部分了。 - JWWalker