2

我有一个测试 PDF 文件,我想通过我的应用在 iBooks 中打开它。我将它保存在我的临时目录中,并使用此代码将其加载到 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

使用 aUIDocumentInteractionController要求您保留一个参考,直到它完成。这意味着您应该使用实例变量,而不是局部变量。实现正确的委托方法,以便在完成控制器后重置 ivar。

启用僵尸将有助于调试此类问题。您很可能会看到一条消息正在发送到已释放的对象(您的控制器)。

于 2013-03-27T16:41:34.577 回答