0

调用以下方法后,我收到此异常。它仅在第一次加载应用程序时出现。当我再次打开应用程序时,它工作正常。任何人都可以帮忙吗?

-(void) createAndCheckDatabase
{
  BOOL success; 

  self.databaseName = @"database.db";
  NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *documentDir = [documentPaths objectAtIndex:0];
  self.databasePath = [[documentDir stringByAppendingPathComponent:self.databaseName]retain];

  NSFileManager *fileManager = [NSFileManager defaultManager];

  success = [fileManager fileExistsAtPath:self.databasePath];

  if(success) return; 

  NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:self.databaseName];

  NSError *err;
  [fileManager copyItemAtPath:databasePathFromApp toPath:self.databasePath error:nil];
  if (err) {
//      DebugLog(@"%@", [err description]);
  }

}
4

2 回答 2

2

if (err) ... 将崩溃,因为 err 未初始化!并且您不在 fileManager copyItemAtPath 中使用它:

于 2012-04-11T09:55:02.990 回答
1

EXEC_BAD_ACCESS几乎总是意味着处理指针或 C 数组的错误,或者对象被溢出release

好消息是你应该在调试器中有一个堆栈跟踪(如果在 Xcode 中运行),或者一个崩溃日志,它可以准确地显示出了什么问题。(如何收集阅读崩溃日志)。

使用 Zombies 工具“分析”您的代码是获取有关过度发布的更多信息的最佳方式。

如果您可以发布符号化的堆栈跟踪,我们可以尝试为您提供更好的诊断。

于 2012-04-11T10:00:58.557 回答