iOS [UIImage imageWithContentsOfFile:filePath] EXC_BAD_ACCESS问题

时间:2015-10-28 06:02:29

标签: ios objective-c uiimage exc-bad-access

以下是代码。它下载缩略图图像,然后尝试基于缩略图文件路径创建图像。但它在方法调用" imageWithContentsOfFile"时给出了EXC_BAD_ACCESS错误。虽然EXC_BAD_ACCESS解决了试图访问已被释放的对象的代码,但我很可能不知道它可能是哪个对象。任何帮助都值得赞赏!

NSBlockOperation *completionOperation = [NSBlockOperation blockOperationWithBlock:^{
            if([[NSFileManager defaultManager] fileExistsAtPath:operation.destinationPath ]){

               NSString *key = [[MEURLCacheKeyRegister sharedRegister] cacheKeyForURL:operation.fileUrl];

               UIImage *image = [UIImage imageWithContentsOfFile:operation.destinationPath];
            }else{
                DDLogDebug(@"Thumbnail file doesn't exist at %@", operation.destinationPath);
            }
        }

    }];

AFDownloadRequestOperation *requestOperation = [FileServerDownloadUtils downloadOperationForURL:operation.fileUrl
                                                                                      destinationPath:operation.destinationPath
                                                                                           completion:completionOperation];
[self.fileSyncQueue addOperation:requestOperation];

1 个答案:

答案 0 :(得分:0)

EXC_BAD_ACCESS表示该对象在被访问时已被释放。

如果我是你,我会尝试以下事情:

  1. 使用.jpg而不是.jpg.prv.jpg扩展名保存文件。
  2. 尝试使用initWithContentsOfFile代替imageWithContentsOfFile作为imageWithContentsOfFile autoreleases图片,在罕见的边缘情况下会造成这样的崩溃。
  3. 将代码传递给block时,通过对self进行弱引用来访问对象属性。这样的事情:__weak MyController *weakSelf = self。然后使用weakSelf访问块内的属性。
  4. 这些只是一些线索,可以帮助您进一步挖掘它。您可以使用NSZombie和其他分析工具来确定它。