使用 NSThread 时出错
Posted
技术标签:
【中文标题】使用 NSThread 时出错【英文标题】:Error when using NSThread 【发布时间】: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 中引发异常,我认为该问题与发布的代码无关。
【参考方案1】:
要查找崩溃位置,请使用调试器,如图所示。! *在调试器pan中使用“所有异常断点”添加断点。
【讨论】:
感谢大家的回复。我检查了调试器的输出,它是 '2012-03-15 09:04:01.472 Poisons[3334:207] -[ViewController updateMyProgressBar]: unrecognized selector sent to instance 0x6846260' 我检查了代码,发现我丢失了程序。现在一切正常。以上是关于使用 NSThread 时出错的主要内容,如果未能解决你的问题,请参考以下文章