Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 当子视图被销毁时,在NSView RemovefromSuperView中前面调用了什么,而不需要显示?_Cocoa_Nsview - Fatal编程技术网

Cocoa 当子视图被销毁时,在NSView RemovefromSuperView中前面调用了什么,而不需要显示?

Cocoa 当子视图被销毁时,在NSView RemovefromSuperView中前面调用了什么,而不需要显示?,cocoa,nsview,Cocoa,Nsview,我的AudioUnit插件发生故障(在Logic 9和Logic X下运行-Mac OS X 10.8.4。不在AU Lab中复制) 我的AudioUnit插件在单独的线程中执行绘制。 当插件GUI关闭时,AU插件接收到以下调用: NSView从SuperView中移除,无需显示 问题是,启动OS X 10.8.4时,使用此函数调用AU时, 执行绘制的单独线程仍在运行。 但是,此时有些东西已经被破坏了,因此我在尝试绘制时收到一个openGL错误: 帧缓冲区操作无效(1286)。 这当然会导致下一

我的AudioUnit插件发生故障(在Logic 9和Logic X下运行-Mac OS X 10.8.4。不在AU Lab中复制)

我的AudioUnit插件在单独的线程中执行绘制。 当插件GUI关闭时,AU插件接收到以下调用: NSView从SuperView中移除,无需显示 问题是,启动OS X 10.8.4时,使用此函数调用AU时, 执行绘制的单独线程仍在运行。 但是,此时有些东西已经被破坏了,因此我在尝试绘制时收到一个openGL错误: 帧缓冲区操作无效(1286)。 这当然会导致下一个插件GUI绘图中的图形损坏,并且在多次尝试打开和关闭GUI后崩溃

问题是: 1.是否有一个函数可以在NSView从SuperView移除之前调用,而不需要显示? 这样,在逻辑破坏视图之前,我可以在单独的线程中停止绘图。 2.如果没有办法,你还有别的建议吗?也许每次画画都要检查一些东西

谢谢!
C.

不需要显示的RemoveFromSuperView方法可能不是关闭子视图UI的最佳方法

有两种选择:

  • 订阅并响应插件主机窗口NSWindowWillClose通知

  • 当NSView方法-(void)视图将移动到Windows:(NSWindow)w时作出反应

  • 用w==nil调用(这基本上意味着视图将很快从窗口中删除)

    在这两种情况下,都有可能在关闭窗口或更改视图层次结构之前立即做出反应,因此子视图仍然有一个“正常”的UI环境