2

PDFドキュメントを印刷するためUIButtonに呼び出すいくつかのコードにリンクされているがあります。UIPrintInteractionController

ボタンをタップすると、ビューがポップアップ表示され、プリンターを選択してドキュメントを印刷できます。ただし、ビューの外側をタップしてポップアップを閉じ、すぐに[印刷] ボタンをもう一度タップすると、次のクラッシュが発生します。

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

NSZombies を有効にしてデバッグしたところ、次の行でクラッシュが発生しました。

printController.printingItem = dataToPrint;

dataToPrint同じメソッドでインスタンス化されますが、このprintController行の前に:

NSData *dataToPrint = [NSData dataWithContentsOfFile:pdfFileName];

このクラッシュは、すばやくタップした場合にのみ発生します。1 秒待つと、すべてがスムーズに進みます。

誰でもこれが何であるか考えていますか?

4

1 に答える 1

3

'dataToPrint' を強力な ivar にし、二度と使用されないことが 100% 確実な場合にのみ nil にします。ほとんどの場合、「printController.printingItem」はそれを保持しますが、ポップアップを閉じると、「印刷」ボタンが再度押される前に解放されます。

于 2012-10-01T15:13:28.167 に答える