2013-10-25 48 views
0

我试图在Mac应用程序中显示一个通知窗口。在应用程序的试用版本中会出现一些东西。窗口将不能移动30秒(并且它会有一个计数器倒数到0)。 30秒将继续执行。系统通知窗口卡住导致程序卡住[Cocoa] [Mac OSX]?

这是代码。

_systemNotificationWindow = [[SystemNotificationWindow alloc]initWithWindowNibName:@"SystemNotificationWindow"]; 
     NSLog(@"1111"); 
     [self.systemNotificationWindow setActionDelegate:self]; 


     [self.systemNotificationWindow startTimer:30]; 
     NSLog(@"2222"); 
     [self.systemNotificationWindow showWindow:self]; 


     NSLog(@"3333"); 

     NSLog(@"4444"); 

的代码停留在这条线

[self.systemNotificationWindow的ShowWindow:自];

它显示窗口,但计时器没有工作,也没有窗口在30秒后消失。也没有打印3333和4444。

回答

1

这听起来像你错过了一个事件循环来控制计时器,所以我猜你是在事件循环创建之前显示窗口。

你可以阅读更多关于事件here和运行循环here

+0

+1。你可以编辑我的代码来包含事件循环吗?我是可可的新手,需要我花很多时间来理解这些主题。如果你可以告诉我要添加的行。 – zzzzz

+0

对不起,如果我确切地知道你需要什么方法,我会以这种方式回答这个问题。在Objective-C中,我还没有必须自己创建事件循环。如果没有其他人可以提供它,您可以阅读文档并计算出您需要的内容,或延迟在应用程序中显示该窗口,以便在启动计时器之前创建主事件循环。 – TheDarkKnight