0

他,当单击主窗口中的按钮时,我以编程方式在线程中创建一个窗口。如果再次单击此按钮,窗口将关闭。美好的。但是当用户通过其关闭按钮关闭窗口时,线程并没有意识到这一点,继续运行。如果用户单击主窗口中的按钮,则线程会尝试关闭窗口并且应用程序会崩溃。所以我需要在线程中检查窗口是否存在。怎么做?谢谢

-(void)prefsWindow:(id)sender {
    NSRect frame = NSMakeRect(200, 200, 640, 480);
    NSWindow *pwindow  = [[NSWindow alloc] initWithContentRect:frame
                                                     styleMask:NSTitledWindowMask 
                                                       backing:NSBackingStoreBuffered
                                                         defer:NO];
    [pwindow center];
    [pwindow makeKeyAndOrderFront:NSApp];
    while (prefsA==1) {

        usleep(250000);}
    [pwindow close];
    [NSThread exit];
}
4

1 回答 1

4

这段代码有很多问题。

首先,不要从线程创建窗口。除非 NSWindow 被明确记录为线程安全,否则您不能从线程中使用它。

其次,您永远不应该使用 sleep() 进行轮询。

最后,没有理由为这样的窗口创建线程。

于 2013-03-20T18:29:03.457 回答