我编写了一个corevideo应用程序,该应用程序具有一个带有单个内容视图的窗口。
窗口将按预期调整大小。我已经添加了代码以使其接受全屏事件,该窗口可以按预期方式运行并且可以正常工作,停靠栏和菜单会自动隐藏,并在鼠标悬停在预期位置时显示。
但是,当我退出全屏模式时,我在AppKit的NSWindow_FullScreen.m
中遇到断言失败,该问题在全屏文档中的任何地方都找不到,也找不到在Google中搜索到的错误消息。我尝试为NSWindowDidExitFullScreen
通知添加观察者,但是断言仍然存在。我希望有人可以提供帮助。
2020-05-10 10:01:16.812 a.out[45616:2858300] *** Assertion failure in -[NSWindow _didExitFullScreen], /BuildRoot/Library/Caches/com.apple.xbs/Sources/AppKit/AppKit-1561.61.100/FullScreen.subproj/NSWindow_FullScreen.m:469 2020-05-10 10:01:16.812 a.out[45616:2858300] content controller was not cleaned up properly
我不确定它指的是内容控制器,我曾尝试添加一个窗口控制器,但它仍然失败,我不确定需要清除什么,因为我的应用程序仍在运行并在其中渲染窗口。
这是我遇到问题的最小应用程序。编译为:gcc -framework AppKit example.m
#import <AppKit/AppKit.h>
int main (int argc, char **argv)
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
[NSApplication sharedApplication];
[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
NSUInteger windowStyle = NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskResizable;
NSRect wr = NSMakeRect(0,0,640,480);
NSWindow * window = [[NSWindow alloc] initWithContentRect:wr
styleMask:windowStyle
backing:NSBackingStoreBuffered
defer:NO];
[window autorelease];
NSWindowCollectionBehavior behavior = [window collectionBehavior];
behavior |= NSWindowCollectionBehaviorFullScreenPrimary;
[window setCollectionBehavior:behavior];
[[NSNotificationCenter defaultCenter]
addObserver:NSApp
selector:@selector(terminate:)
name:NSWindowWillCloseNotification
object:nil];
[window orderFrontRegardless];
[NSApp run];
[pool drain];
return 0;
}
我已经编写了一个corevideo应用程序,该应用程序具有一个带有单个内容视图的窗口。窗口将按预期调整大小。我添加了代码以使其接受全屏事件,窗口会执行此操作...
此问题的原因是,当窗口退出全屏显示时,发送了NSWindowWillCloseNotification
,删除了以下行: