【发布时间】:2014-07-29 17:53:37
【问题描述】:
我有一个测试 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
我做错了什么?提前致谢!
【问题讨论】:
-
控制台显示的错误是什么?什么是堆栈跟踪?您的应用在哪里崩溃?
-
@rmaddy 应用程序在我点击
UIDocumentInteractionControllerpop up 中的 iBooks 图标后立即崩溃,而我在 Xcode 中只收到Thread 1: EXC_BAD_ACCESS (code = 1, address = blah blah)消息。 -
启用僵尸并查看是否正在向已释放对象发送消息。最有可能的问题是您没有保留对
UIDocumentInteractionController的引用,因此它被释放得太快了。 -
@rmaddy 你完全正确!请根据您的评论创建一个答案,以便我接受!
-
改变 documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:fileURL]; to documentInteractionController = [[UIDocumentInteractionController interactionControllerWithURL:fileURL] 保留];解决了我的问题。谢谢@rmaddy
标签: ios objective-c cocoa-touch ibooks uidocumentinteraction