0

应用程序在 xcode 调试阶段在模拟器和设备上运行良好,但将应用程序作为临时分发版本运行它会立即崩溃。部分崩溃报告如下......

Exception Type:  EXC_BAD_ACCESS (SIGSEGV) 
Exception Codes: KERN_INVALID_ADDRESS at 0x50000010 Crashed Thread:  0 
Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libobjc.A.dylib                 0x37859f2a objc_release + 10
1   Simple Science Tab              0x000d3036 -[ssFirstViewController didYouReg]      (ssFirstViewController.m:224)
2   Simple Science Tab              0x000d2450 -[ssFirstViewController viewDidLoad] (ssFirstViewController.m:45)

报告中引用的方法是这样的......

-(void) didYouReg {
NSString *dbtn = @"stage";

BWDB *db2;

NSDictionary * row = nil;
if ((db2 = [[BWDB alloc] initWithDBFilename:home_dbfn andTableName: dbtn])) {

    for (row in [db2 getQuery:@"SELECT reg_yes FROM reg"]) {

        ans= row[@"reg_yes"];

    }

} else {
  //  message(@"db failed to init");
}
[db2 closeDB];

}

我一直在阅读很多帖子并尝试在 xcode 中启用僵尸功能,但这似乎没有显示任何内容。我正在使用 xcode 4.6.1 我会很感激任何建议。谢谢。

4

1 回答 1

0

从提供的代码来看,在我看来,该变量在被调用home_dbfn时被释放didYouReg。如果这仅发生在 ad-hoc 发行版中,那么这当然很难调试。原因可能是例如不同设备的不同时序行为。您可以插入一条assert语句或其他代码以确保它home_dbfn未被释放,然后让您的 beta 测试人员再次运行该应用程序。

于 2013-04-19T15:35:00.573 回答