我是iOS开发人员,正在开发OS X应用程序。 然而,他们彼此之间是如此不同。
我想在应用程序启动时添加启动画面。
- (void) applicationDidFinishLaunching:(NSNotification *)aNotification {
// Hide main window
[self.window orderOut:nil];
SplashWindowController *splashWindowController = [[SplashWindowController alloc] initWithWindowNibName:@"SplashWindowController"];
[NSApp runModalForWindow:splashWindowController.window];
[splashWindowController release];
// Show main window
...
这是“SplashWindowController.m”
- (void)windowDidLoad {
[super windowDidLoad];
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(hideSplash) userInfo:nil repeats:NO];
}
- (void)hideSplash {
[NSApp endSheet:self.window];
[self.window orderOut:nil];
}
我可以看到出现的splash,但是从不调用hideSplash函数。 是什么原因?
答案 0 :(得分:3)
我想知道你没有收到错误,但是这行有一个拼写错误:
[NSTimer scheduledTimerWithTimeInterval:2.0 target self selector:@selector(hideSplash) userInfo:nil repeats:NO];
应该是
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(hideSplash) userInfo:nil repeats:NO];
另一方面,你可以试试这个:
NSTimer *theTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(hideSplash) userInfo:nil repeats:NO];
[[NSRunLoop mainRunLoop] addTimer:theTimer forMode:NSRunLoopCommonModes];
我不确定[NSTimer ...]是否过早销毁......将其分配给实例应该没问题。此外,运行循环被中断,因此您可以尝试将计时器添加到主运行循环。