performSelectorOnMainThread

performSelectorOnMainThread

在解析twitter数据时,我使用线程调用主URL来下载数据。它可以完美地完成下载,但是当我在下载数据时按下“后退”按钮时,它会抛出被释放的performSelectorOnMainThread消息。我知道我们可以使用isCancelled,但是它对我来说还行不通。是否有人遇到过这个问题并已解决。

- (void)LoadTwitterData
{
NSString *urlString =@"http://search.twitter.com/search.json?q=tabc&result_type=recent&rpp=2500";
NSURL *url = [NSURL URLWithString:urlString];

NSString *jsonString = [NSString stringWithContentsOfURL:url];
NSDictionary *values = [jsonString JSONValue];

/**** Throws here *****/
[self performSelectorOnMainThread:@selector(didFinishLoadingResults:) withObject:values waitUntilDone:NO];

}

最佳答案

如果LoadTwitterData:在后台线程中,则需要创建一个自动释放池(如果尚未创建)。用-包围您的代码

NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];


//your code

[pool drain];

关于iphone - performSelectorOnMainThread引发释放的消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7741479/

10-12 15:38