Xcode NSOpenPanel运行模式崩溃?
我有一个基于本论坛代码的例程:Xcode NSOpenPanel运行模式崩溃?,xcode,cocoa,nsopenpanel,Xcode,Cocoa,Nsopenpanel,我有一个基于本论坛代码的例程: + (FSRef)useOpenFileToGetFSRef:(NSString **)fileName requiredFileType: (NSString*) requiredFileType { FSRef fileFSRef; NSArray* fileTypes = [[NSArray alloc] initWithObjects:requiredFileType, nil]; //http://stackoverflow.
+ (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;
}
+(FSRef)使用OpenFileToGetFSref:(NSString**)文件名requiredFileType:(NSString*)requiredFileType
{
FSRef文件FSRef;
NSArray*文件类型=[[NSArray alloc]initWithObjects:requiredFileType,nil];
//http://stackoverflow.com/questions/11815784/objective-c-nsopenpanel-get-filename
NSOpenPanel*openDlg=[NSOpenPanel-openPanel];
[openDlg setFloatingPanel:是];
[openDlg SetCanChoosedDirectories:否];
[openDlg setCanChooseFiles:是];
[openDlg setAllowsMultipleSelection:是];
[openDlg setAllowedFileTypes:文件类型];
if([openDlg runModal]==NSOKButton)//项目文件中似乎存在一些异常。我将所有源文件和xib文件复制到一个新项目中,然后NSOpenPanel runModal按预期工作。我实际上认为您在所有异常上都有一个断点。我只是遇到了这个问题,并查找原因。我遇到了这篇文章,但随后发现了以下内容
当您重新创建项目时,断点被重置。也有类似的问题。我没有存储所有项目文件(同一代码在另一台机器上工作正常)。我一个接一个地删除了它们,没有效果。删除了DerivedData
目录,没有效果
lappy:vStacks ndunn$hg st?
StacksGui3.xcodeproj/project.xcworkspace/xcuserdata/ndunn.xcuserdatad/UserInterfaceState.xcuserstate
?
StacksGui3.xcodeproj/xcuserdata/ndunn.xcuserdatad/xcschemes/StacksGui3.xcschemes?
vStacks.xcodeproj/project.xcworkspace/xcuserdata/ndunn.xcuserdatad/UserInterfaceState.xcuserstate
?
vStacks.xcodeproj/xcuserdata/ndunn.xcuserdatad/xcdebugger/Breakpoints\u v2.xcbkptlist
?
vStacks.xcodeproj/xcuserdata/ndunn.xcuserdatad/xcschemes/vStacks.xcschemes
?
vStacks.xcodeproj/xcuserdata/ndunn.xcuserdatad/xcschemes/xcschememanagement.plist
我本想做你做的事,但结果是:
1-删除我的vStacks.xcodeproj和源
2-创建具有相同名称的另一个
3-删除了新的一个
4-从源代码管理恢复整个项目
注意:不确定第2步和第3步是否必要,但第1步和第4步肯定是必要的。例外情况是什么?根据您的图像,抛出发生在另一个线程quicklook.pluginload中,而不是直接发生在runModal
本身。您在对话框中做什么?是否安装了自定义quicklook插件?我不知道我看不到异常名称的通知。我没有运行任何自定义quicklook插件。什么可能导致quicklook线程崩溃?几个月后我才看到此评论。非常有趣!那么,在打开和保存对话框中异常正常吗?