当你使用NSURLConnection异步模式时,比如代码如下:
NSString *url = [NSString stringWithFormat:@"http://google.cn/...",...];
url = [urlstringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
connection= [[NSURLConnection alloc] initWithRequest:requestdelegate: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;
}
分享到:
相关推荐
NSURLConnection类写的webservice调用类,用于ios客户端访问webservice获取数据
android环境手机远程摄像头监控程序
通过 NSURLConnection 进行异步下载
iOS 断点续传 NSURLConnection 含进度条回调方法 文件名自动获取
NSURLConnection IPhone 网络开发之如何使用
(1)写一个调用webservice的类webservice(代码中有两个,一个是使用NSURLConnection写的类,还有一个是ASIHttpRequest写的webservice调用类) a.同步调用 b.异步调用 c.返回数据的处理 soap调用返回的数据经常放在...
自己简单封装的网络请求类,回调函数是利用block实现的,如果不习惯的可以自己添加delegate事件,项目分别用AFNetworking、NSURLConnection进行简单的封装!
NSURLConnection相关方法被完全的弃用,iOS系统有向下兼容的特性,尽管NSURLConnection已经被弃用,但在开发中,其方法依然可以被使用,并且如果需要兼容到很低版本的iOS系统,有时就必须使用NSURLConnection类了。...
iOS基础——网络请求之NSURLConnection、NSURLSessionDataTask
网络请求,NSURLConnection的使用方法及中文处理等。详情:http://blog.csdn.net/vnanyesheshou/article/details/52467639
基于NSURLConnection、NSURLSession、AFNetworking方式实现文件下载功能
使用了CocoaPods,不会CocoaPods的直接把几个类文件拷到自己工程就好了。
RNCachingURLProtocol, 用于UIWebView和其他NSURLConnection客户端的简单脱机缓存 背景RNCachingURLProtocol是HTTP协议( 这并不像听起来那么可怕)的简单垫片。 每当下载URL时,响应都会缓存到磁盘。 只要有网址,...
BDMultiDownloader, 在NSURLConnection上,基于简单块的并发多URL数据下载 基于 #BDMultiDownloader的简单 objective-c 块基于并发多址数据下载器你的应用程序需要从多个 url ( 本地或者不) 并发下载。 这个类使用块...
用NSURLConnection实现文件下载,OC代码
NSURLSession+SynchronousTask
可以运行项目,没有UI控件,在ViewController的viewDidLoad方法中我们使用XplatNetworkMonitorClient开始监控,并将self作为NSNotificationCenter观察者添加到kXPLNetworkMonitorNotification键。 当网络被拦截时,...
NSURLProtocolDemo 使用NSURLConnection和NSURLSession的NSURLProtocol演示
这是使用NSURLConnection为iOS进行SSL公钥固定的示例实现。 当客户端通过SSL / TLS连接到服务器时,服务器将提供证书。 该证书包含一个公共密钥。 在此示例中,我们提取公钥并将其与本地副本进行比较。 如果服务器...