【发布时间】:2021-10-12 11:46:32
【问题描述】:
我们的用户遇到以下情况的异常:
- 以任意名称保存文件,例如“test1”。
- 打开保存对话框再次保存(该对话框现在默认提示“test1”)。
- 单击“保存”,然后单击“替换”以覆盖现有文件。
结果:异常。
如果,就在步骤 3 之前,用户在对话框查找器窗口中单击文件(名称“test1”仍然存在)- 也不例外。
我发现 here 提到了这个问题,并尝试使用给定的建议 - 但没有帮助。
这是我的代码的简化:
#define kMaxPathLength 1023
[self setDialogResult:[dialog runModal]];
if ([self dialogResult] == NSOKButton)
{
char pathBuffer[kMaxPathLength];
@try{
NSString* pathcopy = [[dialog URL] path]; // <== Causes the exception
[pathcopy getCString:pathBuffer maxLength:kMaxPathLength encoding: NSUTF8StringEncoding];
}
@catch(NSException* e){
<breakpoint>
}
}
带注释的行导致异常:
ROSP: sandbox extension failure: nil result or wrong class type ((null)) for finalURL
注意:上述注释行和以下行是对原始语句的细分:
[[[dialog URL] path] getCString:pathBuffer maxLength:kMaxPathLength encoding:NSUTF8StringEncoding];
也会发生异常。
使用 Xcode 12,Catalina。
有什么建议可以避免这个异常吗?
【问题讨论】:
-
能否在小型测试项目中重现问题?
标签: objective-c exception macos-catalina xcode12 save-as