我正在使用chcsvparser在应用启动时解析来自csv文件的数据。在主线程上启动花费的时间太长,因此我考虑在后台线程上执行此操作。但我读到您不能在线程之间传递对象。解析器输出NSArray,有没有办法做到这一点?我还读到您不应该从后台线程更改UI,但是此数组将加载表 View 。
最佳答案
NSObject类具有几个不同的实例方法,使您可以在主UI线程上调用方法。例如,performSelectorOnMainThread:withObject:waitUntilDone:方法允许您使用所选对象在主线程上调用接收器的方法。
以下是一些入门代码:
-(void) dataDoneLoading:(id) obj {
NSMutableArray *array = (NSMutableArray *) obj;
// update your UI
NSLog(@"done");
}
-(void) myThread:(id) obj {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSMutableArray *array = [[[NSMutableArray alloc]init ]autorelease];
// build up your array
[self performSelectorOnMainThread:@selector(dataDoneLoading:) withObject:array waitUntilDone:NO];
[pool release];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[NSThread detachNewThreadSelector:@selector(myThread:) toTarget:self withObject:nil];
}
关于iphone - 我可以使用后台线程解析数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6965265/