退出全屏显示时NSApplication断言失败

问题描述 投票:0回答:1

我编写了一个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应用程序,该应用程序具有一个带有单个内容视图的窗口。窗口将按预期调整大小。我添加了代码以使其接受全屏事件,窗口会执行此操作...

objective-c macos nswindow fullscreenchange
1个回答
0
投票

此问题的原因是,当窗口退出全屏显示时,发送了NSWindowWillCloseNotification,删除了以下行:

© www.soinside.com 2019 - 2024. All rights reserved.