Vfr Reader と呼ばれるこのオープン ソース コントロールを使用して、アプリで PDF ファイルを表示しています。すべてiOS 7で動作していました。PDFファイルを開こうとするとiOSアップデートアプリがクラッシュします。
このコードを使用してpdfリーダーを初期化しています。
NSString *fileName = [[NSBundle mainBundle] pathForResource:@"PdfName" ofType:@"pdf"];
ReaderDocument *document = [ReaderDocument withDocumentFilePath:fileName password:nil];
if (document != nil)
{
ReaderViewController *readerViewController = [[ReaderViewController alloc] initWithReaderDocument:document];
readerViewController.delegate = self;
readerViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
readerViewController.modalPresentationStyle = UIModalPresentationFullScreen;
[self presentViewController:readerViewController animated:YES completion:Nil];
}
vfr のこの機能でアプリがクラッシュする
+ (NSString *)relativeFilePath:(NSString *)fullFilePath
{
assert(fullFilePath != nil); // Ensure that the full file path is not nil
NSString *applicationPath = [ReaderDocument applicationPath]; // Get the application path
NSRange range = [fullFilePath rangeOfString:applicationPath]; // Look for the application path
assert(range.location != NSNotFound); // **Crashes here**
return [fullFilePath stringByReplacingCharactersInRange:range withString:@""]; // Strip it out
}
クラッシュ デバッガーでは、これらの値が表示されます。
fullFilePath = @"/Users/GuruTraxiOSDev01/Library/Developer/CoreSimulator/Devices/CC9412A6-9A95-4F46-89BA-8ECC13D0AF19/data/Containers/Bundle/Application/D2DC440B-F010-4575-93FD-3CB05BFF4F78/AppName.app/PdfName .pdf" 0x798c9b30
範囲 = 場所 = 2147483647、長さ = 0
applicationPath = @"/Users/GuruTraxiOSDev01/Library/Developer/CoreSimulator/Devices/CC9412A6-9A95-4F46-89BA-8ECC13D0AF19/data/Containers/Data/Application/32D612DE-FFD2-4C1E-B403-CDA177B460A6" 0x798b46b0
ファイルの存在は確認済みです。誰でも助けてください!
編集:この質問は、ファイルの読み込み時のクラッシュを解決しました。ただし、アプリは引き続き CGContextDrawPDFPage(context, thePDFPageRef); でクラッシュします。