停止当前正在运行的writeToFile:
问题描述:
我有一些代码会将一些PDFDocument
对象写入用户选择的目标。这工作正常。停止当前正在运行的writeToFile:
也许这些文件中的一些(由用户选择)可能相当大(可能是几百兆字节),现在我想知道是否有可能取消当前的呼叫(例如,用户改变了主意并希望停下来)。
答
我怀疑你可以用这种方法来做,因为它不提供取消功能。
我建议您使用dataRepresentation
方法PDFDocument
先获取PDF数据。然后你可以使用NSData
的subdataWithRange:
来分割数据。然后您可以使用NSFileHandle
的fileHandleForWritingToURL:error:
,writeData:
和closeFile
方法将数据连续写出到文件中。
从非主线程以for
的形式写出这样的块 - 可以说任何时候都可以取消它。
通常这将是一种方法来做到这一点。但不幸的是,我正在使用'options'字典来提供一个Quartz过滤器,这会导致PDF文件被压缩。 – Alex