2

我有一个UIButton链接到一些调用UIPrintInteractionController以打印 PDF 文档的代码。

如果我点击按钮,会弹出视图让我选择打印机,然后打印文档。但是,如果我在视图外部点击以关闭弹出窗口,然后再次快速点击“打印”按钮,则会出现以下崩溃:

[NSConcreteData respondsToSelector:]: message sent to deallocated instance 0xa4696d0

我在启用 NSZombies 的情况下进行了调试,崩溃发生在这一行:

printController.printingItem = dataToPrint;

dataToPrint以相同的方法实例化,但在此printController行之前:

NSData *dataToPrint = [NSData dataWithContentsOfFile:pdfFileName];

只有当我快速点击时才会发生这种崩溃,如果我给它一秒钟,一切都会顺利进行。

有人知道这可能是什么吗?

4

1 回答 1

3

使“dataToPrint”成为一个强大的 ivar,并且只有在您 100% 确定它不会再次使用时才将其设为 nil。'printController.printingItem' 很可能会保留它,但是当您关闭弹出窗口时,它会在再次点击“打印”按钮之前被释放。

于 2012-10-01T15:13:28.167 回答