0

我是一名 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];
}

我可以看到出现的飞溅,但从不调用 hideSplash 函数。什么原因?

4

1 回答 1

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...] 是否过早销毁...将其分配给实例应该没问题。同样,运行循环被中断,因此您可以尝试将计时器添加到主运行循环。

于 2012-10-14T09:51:33.963 回答