Myleft个人家园

 

 

搜索

常见问题NSURLConnection delegate methods得不到调用

已有 85 次阅读 2010-3-10 13:21 |个人分类:iPhone|关键词:delegate methods 得不到

当你使用NSURLConnection异步模式时,比如代码如下:

NSString *url = [NSString stringWithFormat:@"http://google.cn/...",...];

url = [url stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];

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

并实现了NSURLConnection的代理方法:

#pragma mark NSURLConnection delegate methods

// The following are delegate methods for NSURLConnection.

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

}

但是你发现代码方法永远执行不到。

原因一般是因为这些方法是在一个单独线程中执行,需要一段时间来处理网络数据。

而在此之前你可能在别处退出了该线程。

为了避免这种情况,通常你可以在发送URL请求后,等待数据处理完成再做下一步的事情,这样就可以和主线程或其它线程同步:

while(!finished) {

[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];

}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

finished = TRUE;

}

路过

雷人

握手

鲜花

鸡蛋

漂亮

评论 (0 个评论)

facelist

你需要登录后才可以评论 登录 | 注册
验证码 换一个

御舟工作室.

GMT+8, 2010-9-10 08:33 , Processed in 0.011543 second(s), 16 queries .

Powered by Discuz! X1.5RC

© 2001-2010 Comsenz Inc.