NSURLConnection代表不工作

时间:2012-01-27 15:55:06

标签: iphone objective-c nsurlconnection ios5 nsurlconnectiondelegate

我已经搜索并尝试了很多但是在我的应用程序(使用iOS 5 sdk)中,NSURLConnection委托方法仅在我初始化并在viewDidLoad方法中启动连接或在任何按钮的单击事件时被调用。

但是我想在解析我的JSON文件后调用它。并为JSON中的每条记录创建一个新连接。

谁能告诉我发生了什么?在ios sdk 5中有什么变化。

这是我的代码:

-(void)getData:(NSString*)URL{
NSURLRequest *urlRequest = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:URL]];

shortURL = [NSString stringWithString:URL];


connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];

//NSAssert(connection!=nil, @"no connection", nil);
[connection start];

}

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response

{     // application specific stuff }

getData函数是在从NSObject继承的类中编写的。它来自

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

UITableView的方法。

请帮助我。

1 个答案:

答案 0 :(得分:2)

假设JSON解析代码发生在后台线程中,您必须为该线程创建一个NSRunLoop。

NSURLConnection类只是将自己添加到runloop中,如果不存在,则不会调用任何处理或委托方法。

connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
[[NSRunLoop currentRunLoop] run];

注意:run方法将阻止