3

我有一个基于在这个论坛上找到的代码的例程:

+ (FSRef)useOpenFileToGetFSRef:(NSString **)fileName requiredFileType: (NSString*) requiredFileType
{
     FSRef fileFSRef;
    NSArray* fileTypes = [[NSArray alloc] initWithObjects:requiredFileType, nil];

    //http://stackoverflow.com/questions/11815784/objective-c-nsopenpanel-get-filename
    NSOpenPanel* openDlg = [NSOpenPanel openPanel];
    [openDlg setFloatingPanel:YES];
    [openDlg setCanChooseDirectories:NO];
    [openDlg setCanChooseFiles:YES];
    [openDlg setAllowsMultipleSelection:YES];
    [openDlg setAllowedFileTypes:fileTypes];

    if ( [openDlg runModal] == NSOKButton )  //<== CRASHES ON CALL TO runModal
    {
        NSArray* filePaths = [openDlg URLs];
        //only getting 1st file
        NSURL *fileUrl = [filePaths objectAtIndex:0];

        *fileName = [fileUrl path];
        CFURLGetFSRef((CFURLRef)fileUrl, &fileFSRef);
    }

    return fileFSRef;
}

该应用程序在调用 runModel 时反复出现问题:

NSOpenPanel runModal 异常

这有什么可以解释的?

非常感谢大家提供任何信息。

系统信息:OS X 10.8.4。使用 ARC 编译。

4

3 回答 3

7

我实际上认为你在所有异常上都有一个断点。我刚遇到这个,正在寻找原因。我遇到了这篇文章,但后来发现了以下内容。

使用 Xcode 4.5.1 调试时 NSOpenPanel 崩溃

当您重新创建项目时,断点被重置。

于 2013-11-04T01:16:15.803 回答
0

有类似的问题。我没有存储所有项目文件(相同的代码在另一台机器上完美运行)。我一个一个删除,没有效果。删除DerivedData目录,没有效果。

lappy:vStacks ndunn$ hg st 。? StacksGui3.xcodeproj/project.xcworkspace/xcuserdata/ndunn.xcuserdatad/UserInterfaceState.xcuserstate ?StacksGui3.xcodeproj/xcuserdata/ndunn.xcuserdatad/xcschemes/StacksGui3.xcscheme ?vStacks.xcodeproj/project.xcworkspace/xcuserdata/ndunn.xcuserdatad/UserInterfaceState.xcuserstate ?vStacks.xcodeproj/xcuserdata/ndunn.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist ?vStacks.xcodeproj/xcuserdata/ndunn.xcuserdatad/xcschemes/vStacks.xcscheme ?vStacks.xcodeproj/xcuserdata/ndunn.xcuserdatad/xcschemes/xcschememanagement.plist

我正打算做你所做的,但我最终:
1 - 删除我的 vStacks.xcodeproj 和源代码
2 - 创建另一个同名
3 - 删除新的
4 - 从源代码管理中恢复整个项目。

注意:不确定是否需要步骤 2 和 3,但肯定需要步骤 1 和 4。

于 2014-01-16T17:57:52.697 回答
0

项目文件中似乎有一些异常。我将所有源文件和 xib 文件复制到一个新项目中,之后 NSOpenPanel runModal 按预期工作。

于 2013-07-05T21:06:34.537 回答