大家好,你是我找到这个bug的最后机会。我搜索了一整天都找不到任何东西。
我正在做的是从本地保存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];
答案 0 :(得分:1)
尝试将所有release
语句注释掉作为开始......如果崩溃消失,请开始缩小导致问题的原因。另外:你应该学习autorelease,因为在很多情况下你会在上面的代码中不必要地保留。
如果这不起作用,请尝试逐位注释掉你的代码片段以找出它真正爆炸的位置(显然不是XCode显示的地方)。
答案 1 :(得分:0)
我遇到了同样的问题,它与模拟器中的自动更正有关。
模拟器>设置>一般>键盘>自动更正=关