【发布时间】:2012-03-14 17:11:56
【问题描述】:
当我的应用程序第一次启动时,它会将 plist 的内容加载到 sqlite 表中。我正在使用 NSThread 来运行该过程,但是一旦该过程完成,它就会引发错误。我用来调用进程并运行它的代码如下 -
[NSThread detachNewThreadSelector:@selector(addData) toTarget:self withObject:nil];
-(void)addData
{
@try {
sqlite3_stmt *stmt;
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[NSThread sleepForTimeInterval:1];
.
.
Process Data
.
.
[pool drain];
}
@catch (NSException *exception) {
}
}
错误是一个SIGABRT错误,出现在下面的代码中-
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
我已经在 Debug 中逐步完成了该过程,该过程正常完成,但几秒钟后它会引发此错误。它发生在线程 1 中,代码在 Main.m 中
谁能告诉我我哪里错了。
【问题讨论】:
-
获取 SIGABRT 并且调试器在 UIApplicationMain 上停止通常是由于引发了 NSException 而发生的......在这种情况下,异常的一些细节将被打印到调试器控制台。如果查看上述细节并不能解决您的问题,在此处复制它们可能会帮助您获得一个好的答案。 (如果您没有看到调试器输出,您可能想尝试删除您的
@try/@catch构造。) -
如果在线程 1 中引发异常,我认为该问题与发布的代码无关。
标签: iphone xcode4 nsthread autorelease