目标c-文件->重复崩溃的基于NSDocument的应用程序



我正在编写一个基于文档的OSX应用程序。我最近发现,使用Duplicate会使我的应用程序崩溃,调试器会在本机程序集中停止。

我有一个NSDocument子类覆盖这些:

- (NSData *)dataRepresentationOfType:(NSString *)typeName
- (BOOL)readFromFileWrapper:(NSFileWrapper *)fileWrapper
                     ofType:(NSString *)typeName
                      error:(NSError **)outError

我可以保存和打开,如果我在文件菜单中添加另存为,我甚至可以另存为。

如果我这样做…

- (NSDocument *)duplicateAndReturnError:(NSError **)outError
{
    return [[Document alloc] init];
}

…它不再崩溃,但"复制"然后什么也不做,没有动画,没有新窗口,什么都不做。

对不起,我知道没什么好说的,但我不知道如何调试它。欢迎提出任何建议。

尽管最初的海报已经说明了这一点,但要让未来阅读本文的人清楚:您应该实现三个read方法中的一个和匹配的write方法。

例如,从以下三个选项中选择要实现的方法集:

//有了这对,你就可以自己负责读写所有内容,你的磁盘格式可以是任何格式open func read(来自url:url,类型名称:String(throwsopen func write(到url:url,类型名称:字符串(抛出

//使用这两个文件包,您可以处理一个FileWrapper,如果您的文件格式是捆绑包(带有扩展名的文件夹(,它会让您的生活变得更轻松open func read(来自fileWrapper:fileWrapper,类型名称:String(throwsopen func fileWrapper(类型typeName:String(抛出->FileWrapper

//有了这对,你只需要读写一个平面二进制文件open func read(from data:data,Type typeName:String(throwsopen func数据(类型typeName:String(抛出->数据

最新更新