2

アプリを使用して iBooks で開きたいテスト PDF ファイルがあります。これを一時ディレクトリに保存し、次のコードを使用して iBooks にロードします。

NSURL *targetURL = [NSURL fileURLWithPath:tempFullPath];
NSLog(@"Path is %@", tempFullPath);
UIDocumentInteractionController *controller = [UIDocumentInteractionController interactionControllerWithURL:targetURL];
controller.delegate = self;
controller.UTI = @"com.adobe.pdf";

[controller presentOpenInMenuFromRect:self.view.bounds inView:self.view animated:YES];

メニューは問題なくポップアップしますが、iBooks ボタンをタップするとアプリがクラッシュし、Xcode がハングします。

NSLog 出力で取得するファイルへのパスは次のようになります。

Path is /private/var/mobile/Applications/65EC4182-A79B-431C-9E74-BD72D91A31AB/tmp/TestFile.pdf

私は何を間違っていますか?前もって感謝します!

4

1 に答える 1

8

a を使用するには、UIDocumentInteractionController完了するまで参照を保持する必要があります。これは、ローカル変数ではなく、インスタンス変数を使用する必要があることを意味します。適切なデリゲート メソッドを実装して、コントローラーの使用が完了したときに ivar をリセットできるようにします。

ゾンビを有効にすると、このような問題のデバッグに役立ちます。ほとんどの場合、メッセージが割り当て解除されたオブジェクト (コントローラー) に送信されていることがわかります。

于 2013-03-27T16:41:34.577 に答える