Jon*_*Jon 1 iphone xcode multithreading objective-c
我正在使用chcsvparser来解析我的应用程序启动时csv文件中的数据.在主线程上启动时间太长,所以我想在后台线程上执行此操作.但我读到你无法在线程之间传递对象.解析器输出一个NSArray,有没有办法做到这一点?我还读过你不应该从后台线程更改UI,但是这个数组会加载一个表视图.
您始终可以在线程之间传递对象.
使用以下代码创建一个线程并将对象传递给它.
[NSThread detachNewThreadSelector:@selector(myThreadSelector:) toTarget:self withObject:myObject];
Run Code Online (Sandbox Code Playgroud)
线程函数结束后,您可以使用将数据传递回主线程
[self performSelectorOnMainThread:@selector(myMainSelector:) withObject:myReturnObject waitUntilDone:NO];
Run Code Online (Sandbox Code Playgroud)
您可以将输出NSArray从解析器传递给myMainSelector:并在其中重新加载tableview.
-(void)myMainSelector:(id)sender
{
NSArray *arr = sender;
tableDataArray = [NSArray arrayWithArray:arr];
[yourTableView reloadData];
}
Run Code Online (Sandbox Code Playgroud)
您在线程方法中时可以显示活动指示器.