2013-03-27 99 views
1

我有一個測試PDF文件,我想通過我的應用程序在iBook中打開。我在臨時目錄中保存它,我使用此代碼加載到的iBooks:UIDocumentInteractionController在iBooks中打開pdf崩潰

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 

我在做什麼錯?提前致謝!

+1

控制檯中顯示的錯誤是什麼?什麼是堆棧跟蹤?你的應用崩潰在哪裏? – rmaddy 2013-03-27 16:27:10

+0

@rmaddy應用程序在我點擊UIDocumentInteractionController中的iBooks圖標後崩潰,我只在Xcode中獲得線程1:EXC_BAD_ACCESS(code = 1,address = blah blah)消息。 – 2013-03-27 16:28:30

+1

啓用殭屍並查看消息是否被髮送到釋放對象。最有可能的問題是,你不保留對'UIDocumentInteractionController'的引用,因此它被過早釋放。 – rmaddy 2013-03-27 16:31:08

回答

6

使用UIDocumentInteractionController要求您保留一個引用,直到它完成。這意味着你應該使用一個實例變量,而不是局部變量。實施適當的委託方法,以便在完成控制器後重置伊娃。

啓用殭屍將有助於調試此類問題。很有可能你會看到一條消息被髮送到一個釋放對象(你的控制器)。

+0

非常感謝! – 2013-03-27 16:56:51

+0

準確地說,使用這個控制器作爲UIPopoverController,必須保留它直到完成! – VietHung 2013-06-23 05:47:30

+0

@rmaddy我該如何使用?你能給我建議嗎? – Vvk 2016-11-17 18:07:36