我有一个关于如何刷新iOS应用的UI的问题。我想要实现的是:
为此,我创建了以下源代码:
- (void)viewDidLoad
{
[super viewDidLoad];
NSURL *myURL = [[NSURL alloc] initWithString:[Constant webserviceURL]];
NSURLRequest *request = [NSURLRequest requestWithURL:myURL cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
[self myparser] = [[MyXMLParser alloc] initXMLParser];
[parser setDelegate:myparser];
BOOL success = [parser parse];
if (success) {
// show XML data to UITableView
[_tableView performSelectorOnMainThread:@selector(reloadData) withObject:[myparser xmldata] waitUntilDone:NO];
}
else {
NSLog(@"Error parsing XML from web service");
}
}
================== 我的实施是否正确?有谁知道如何解决它?
答案 0 :(得分:0)
你想打电话
+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler
它将调用将数据放在不同的线程上,然后当数据下拉或者从URL中下载数据时出现问题,它会在同一个线程上调用处理程序块打了个电话。
以下是使用它的一种方法:https://stackoverflow.com/a/9409737/1540822
您也可以使用
- (id)initWithRequest:(NSURLRequest *)request delegate:(id < NSURLConnectionDelegate >)delegate
当在chucks中下载数据时,这将调用您的NSURLConnectionDelegate方法之一。如果您要获得大数据,那么您可能希望使用此数据,这样您就不会在响应中花费太多时间。