我有一个测试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
我做错了什么?提前谢谢!
答案 0 :(得分:7)
使用UIDocumentInteractionController
要求您在完成前保留引用。这意味着您应该使用实例变量,而不是局部变量。实现适当的委托方法,以便在完成控制器后重置ivar。
启用僵尸将有助于调试此类问题。很可能您会看到正在将消息发送到解除分配的对象(您的控制器)。