我有一个基于此论坛上的代码的例程:
+ (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:
有什么可以解释这个?
非常感谢所有人提供任何信息。
系统信息:OS X 10.8.4。使用ARC编译。
答案 0 :(得分:7)
我实际上认为你在所有例外都有断点。我刚碰到这个并且正在寻找原因。我遇到了这篇文章,但随后发现了以下内容。
NSOpenPanel crashes when debugging with Xcode 4.5.1
重新创建项目时,断点已重置。
答案 1 :(得分:0)
看起来项目文件中存在一些异常现象。我将所有源文件和xib文件复制到一个新项目,然后NSOpenPanel runModal按预期工作。
答案 2 :(得分: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。