int retVal = UIApplicationMain (argc, argv, nil, nil); EXC_BAD_ACCESS при попытке загрузить PDF в WebView - PullRequest
4 голосов
/ 30 июня 2011

Привет, ребята, вы мой последний шанс найти эту ошибку.Я искал весь день и не смог ничего найти.

Что я делаю, я сохраняю файл PDF из Интернета локально, а затем загружаю его в webView.В iOS 4.0 и 4.1 он выдает ошибку BAD_ACCESS, в то время как в iOS 4.2 и 4.3 он работает нормально.

Это код, который я использую:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"press.pdf"]; 

filePath = [[NSURL fileURLWithPath:path]retain];
NSError *err =nil;
if ([[NSFileManager defaultManager] fileExistsAtPath:path]) { //if file already exists delete it
    NSLog(@"file is already there !");
    [[NSFileManager defaultManager] removeItemAtPath:path error:&err];
    NSLog(@"error: %@",err);
}
[responseData writeToURL:filePath atomically:YES];
[responseData release];

if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
    NSLog(@"file is  there");
    NSData *pdfFile = [[NSData alloc]initWithContentsOfFile:path ];
    [webView loadData:pdfFile MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];
    [pdfFile release];
}
else{
    NSLog(@"file not there");
}

Я пытался включить NSAutoreleaseFreedObjectCheckEnabled, NSZombieEnabled и NSDebugEnabled но в консоли я ничего не получаю.Xcode просто останавливается на этой строке:

int retVal = UIApplicationMain(argc, argv, nil, nil); 

и заявляет EXC_BAD_ACCESS

Я понятия не имею, что это может быть и где искать дальше.Пожалуйста, помогите

РЕДАКТИРОВАТЬ: я забыл упомянуть, что, если я прокомментирую следующую строку, он, очевидно, не падает, потому что ничего не загружается в webView.

[webView loadData:pdfFile MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];

Ответы [ 2 ]

1 голос
/ 30 июня 2011

Попробуйте закомментировать все операторы release в качестве начала ... если сбой проходит, начните с выяснения, какой из них вызывает проблему.Кроме того: вам действительно нужно изучить авто-релиз, потому что во многих случаях вы без необходимости сохраняете его в приведенном выше коде.

Если это не сработает, попробуйте комментировать кусочки кода постепенно, чтобы выяснить, гдеэто действительно взрывается (очевидно, НЕ там, где показывает XCode).

0 голосов
/ 28 октября 2011

У меня была такая же проблема, и это как-то связано с автокоррекцией в симуляторе.

Симулятор> Настройки> Общие> Клавиатура> Автозамена = Выкл.

...