【问题标题】:NSOpenPanel acting weirdNSOpenPanel 行为怪异
【发布时间】:2013-01-22 22:17:44
【问题描述】:

我正在尝试使用 NSOpenPanel 来打开打开文件页面。它在大多数情况下都可以正常工作,除了 3 件事:

  1. 第一个问题是侧边栏没有出现,虽然我还是可以点击。

  2. 第二个问题是,当我切换到一个文件比之前少的文件夹时,屏幕没有被清除,并且之前的一些文件仍然出现,尽管它们不可点击。

  3. 当我尝试切换到列视图时,应用程序崩溃。但是所有其他 3 个视图都可以正常工作。

这是崩溃日志:

AppKit`-[NSTableView setVerticalMotionCanBeginDrag:]:
0x7fff91d4f899:  pushq  %rbp
0x7fff91d4f89a:  movq   %rsp, %rbp
0x7fff91d4f89d:  movq   7385076(%rip), %rax       ; TrustKeychains::systemKcHandle() + 92
0x7fff91d4f8a4:  movq   (%rax,%rdi), %rax
0x7fff91d4f8a8:  movq   7385193(%rip), %rcx       ; tp_policyTrustSettingParams + 92
0x7fff91d4f8af:  movl   $4292870143, %edi
0x7fff91d4f8b4:  andl   (%rax,%rcx), %edi   <- Crash points here with EXC_BAD_ACCESS (code=1, address = 0x18)
0x7fff91d4f8b7:  shll   $21, %edx
0x7fff91d4f8ba:  andl   $2097152, %edx
0x7fff91d4f8c0:  addl   %edi, %edx
0x7fff91d4f8c2:  movl   %edx, (%rax,%rcx)
0x7fff91d4f8c5:  popq   %rbp
0x7fff91d4f8c6:  ret    

崩溃日志显示崩溃发生在线程 1 中。

我想知道是否有人知道如何解决它。这是我的代码

-(IBAction)openDialog:(id)sender{
NSWindow *window = [[viewArray objectAtIndex:currentIndex] window];

NSOpenPanel *openDialog = [NSOpenPanel openPanel];
[openDialog setCanChooseFiles:YES];
[openDialog setCanChooseDirectories:NO];
NSString *homeString = [NSString stringWithFormat:@"file://localhost%@",NSHomeDirectory()];
[openDialog setDirectoryURL:[NSURL URLWithString:homeString]];
NSArray *fileTypes = [[NSArray alloc] initWithObjects:@"xcodeproj", nil];
[openDialog setAllowedFileTypes:fileTypes];

[openDialog beginSheetModalForWindow:window completionHandler:^(NSInteger result){
    if (result == NSFileHandlingPanelOKButton){
        NSURL *doc = [openDialog URL];
        [[NSWorkspace sharedWorkspace] openFile:[doc relativePath]];
    }
}];

}

我将完全相同的代码放在不同的 XCode 项目中,它工作得很好,所以我不太确定问题出在哪里。谢谢!

【问题讨论】:

  • 听起来像是堆栈损坏。
  • 什么是堆栈损坏?抱歉,我还在学习如何使用 Objective-C 编写代码

标签: cocoa nsopenpanel


【解决方案1】:

我发现了问题。事实证明,在我的项目中,我重新定义了 NSTableView,这导致了所有错误。

【讨论】:

    猜你喜欢
    • 2019-11-03
    • 2012-08-05
    • 2012-12-03
    • 2023-03-02
    相关资源
    最近更新 更多