如何使用NSThread进行异步调用

时间:2009-11-30 13:31:00

标签: iphone

我在tableview中制作了一个图像列表+各自的数据。 加载时需要很长时间 我想制作多线程两种方法

1> 解析数据

2 - ; 解析图像

我想首先执行解析数据,之后我可以选择列出的任何行,即使图像未被加载(/解析),因为图像在解析数据后被解析并且需要很长一段时间。

我应该从哪里调用这两种方法。 以及如何在解析数据后启用行选择... 如何做多线程的方法

等待你的好回应

提前感谢

1 个答案:

答案 0 :(得分:1)

你可能不想使用NSThreads - 至少不是直接使用。 你所做的是NSOperation的子类。

有几种方法可以做到你的想法。如果您从一开始就知道表中的总行数,那么事情就更简单了:

创建一个名为MyParseDataOperation的NSOperation的子类。然后为表中的每一行创建一个MyParseDataOperation。操作完成后,您需要使用结果数据向主线程发送消息。

下面的代码充满了错误,不完整。等。

即在MyParseDataOperation类中:

MyParseDataOperation

-(id)initWithStuff:(NSURL*)stuff forTableRow:(int)row;
{
blah blah - 
// here is where I make sure I have all the data I need for main() which is called in the background on some random thread at some future time.
}

-(void)main;
{
// use data like Urls, file names, etc passed in to the initWithStuff method
get stuff
parse stuff

// ok now you have the data

NSMutableDictionary* parsedData = [NSMutableDictionary dictionary];

[parsedData setObject:[NSNumber numberWithInt:row] forKey:@"row"];
[parsedData setObject:stuff i figured out forKey:@parsed];

[tableDataSource performSelectorOnMainThread:@selector(dataParsed) withObject:parsedData];

}