これは以前は既知のバグでしたが、実際には iOS 4.2 よりも新しいバージョンの iOS でこの問題が発生しました。
問題はUIDocumentInteractionController
、 がデバイス上で正常に動作することですが、シミュレーターではクラッシュします。私が発見したのは、メモリの管理を少し変えると問題が解決したことです。違いはautoreleasing
、DidEndPreview
デリゲート メソッドにあります。ここに私のコードのコアがあります:
-(void)createPDF
{
UIDocumentInteractionController *dc;
//....other code to generate pdf document
dc = [[UIDocumentInteractionController interactionControllerWithURL:loadURL] retain];
dc.delegate = self;
[dc retain];
[dc presentPreviewAnimated:YES];
}
//Delegate Methods
- (void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller
{
[controller autorelease];
}
以前は、通常のモーダル ビューのようにドキュメント コントローラーを作成し、表示後にリリースするだけでした。
注 : autorelease は重要です。通常の release 呼び出しだけでクラッシュします。