他,当我点击主窗口中的按钮时,我以编程方式在线程中创建一个窗口。如果再次单击此按钮,则窗口将关闭。精细。但是当用户通过其关闭按钮关闭窗口时,线程不会意识到这一点,正在运行。如果用户单击主窗口中的按钮,则线程正在尝试关闭窗口并且应用程序正在崩溃。所以我需要在线程内检查窗口是否存在。怎么做?感谢
-(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];
}
答案 0 :(得分:4)
此代码有很多问题。
首先,不要从线程创建窗口。除非将NSWindow明确记录为线程安全,否则不能在线程中使用它。
其次,你不应该用sleep()进行轮询。
最后,没有理由为这样的窗口创建一个线程。