我的應用程序,當用戶打開它,啓動NSThread下載新數據(解析XML文件)。 這是代碼(在AppDelegate.m):第二次NSThread崩潰
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSThread* parse_thread = [[NSThread alloc] initWithTarget:self selector:@selector(load_data) object:nil];
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
[parse_thread start];
[parse_thread release]; //is it right?
-(void)load_data{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
... //here the parser
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
[pool release];
[NSThread exit];
}
它工作正常!
在第一個視圖中有一個tableview:第一個單元格需要讀取用戶位置的GPS座標並解析url中的其他數據。
這是代碼(在myview.m):
- (void)locationUpdate:(CLLocation *)location {
loc = location;
[locationController.locationManager stopUpdatingLocation];
NSThread *parse_2 = [[NSThread alloc] initWithTarget:self selector:@selector(load_data_2) object:nil];
[parse_2 start];
[parse_2 release];
}
-(void)load_data_2{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
//here the parse
[pool release];
[NSThread exit];
}
所以...當用戶觸摸該單元格,應用程序崩潰!並且控制檯沒有一個日誌! (如果呼叫時不使用方法的NSThread
[self load_data_2];
它的工作原理沒有問題!
你知道我在做什麼錯?
不要使用'[NSThread exit]',這是沒有必要的。除此之外,如果沒有來自控制檯的錯誤信息,那麼這裏就不會有太多的事情要做。 – Anomie 2011-03-09 18:25:53