苹果开发 笔记(55)NSURLConnection
2015-07-31 18:42
423 查看
今天继续挖苹果的坑,使用这个NSURLConnection 下载一个文件的时候却不知道为什么有个代理的方法不执行,查询了一些说是和线程有关系。但具体是怎样一回事还是有点郁闷当中。
ios网络层优化深入浅出
文章讲述到这个问题。 引用当中文章 提及到一句话。NSURLConnection 执行异步请求下载的时候,connectionDidFinishLoading 却一点都不反应了。
网上一篇老外的文章提及这个问题解决方法,代码如下。但是测试过程中还是没有反应。不知道是测试问题还是其他逻辑写错了。反正这个问题还是没有解决到。
整个过程是异步的,但delegate方法永远会在主线程执行
后续继续探讨这个问题。
随后在code4pp 发现了一些下载加载的类库。先暂时收藏一下。
http://code4app.com/ios/TCBlobDownload/5294aeadcb7e8482788b4f7c
2015-8-2 更新
今晚看到AFNetWorking 这个类的时候,看到关于NSURLSession相关的封装,于是其实很疑惑,想想每次IOS升级后,有时候采取删减API 有时候则会新增一个新的代替的方案 性能更加优秀 。NSURLConnection 讲到历史 基于IOS 7.0 的版本,如果使用这个IOS 6.0的用法又得遭殃了。但是苹果提及到NSURLSession和 NSURLConnection 是并列。所以两者都可以选择其一,当然更高的版本会选择NSURLSession ,为了兼容则会使用 NSURLConnection 来设计。
AFNetWorking 2.x版本后续也有相关的介绍。
记录一个在做进度显示遇到一个小问题。
NSString format的时候怎样显示百分号,度娘一下 这里的代码如下
如果单纯写%百分号则会发出警告而且显示不出来,加上%% 两个这样符号则可以显示出来了。
2015-8-6日
关于同步与异步,NSURLConnection 支持同步与异步的获取数据的方式,同步会发生阻塞,异步则不会。有时候需要使用同步,有时候则采取异步会更加友善。使用场景不一样,两种方式为获取数据带来便利。
NSURLConnection 同样支持代理模式、
英文单词
Synchronous 同步
Asynchronous 异步
下面为异步请求返回数据处理,错误机制等
下面为同步
检测版本号,登录 则使用同步较为适合 ,像图片获取等非及时性 采取异步更加适合避免阻塞带来问题
[code]- (void)connectionDidFinishLoading:(NSURLConnection *)connection { //出现不执行情况 }
ios网络层优化深入浅出
文章讲述到这个问题。 引用当中文章 提及到一句话。NSURLConnection 执行异步请求下载的时候,connectionDidFinishLoading 却一点都不反应了。
网上一篇老外的文章提及这个问题解决方法,代码如下。但是测试过程中还是没有反应。不知道是测试问题还是其他逻辑写错了。反正这个问题还是没有解决到。
[code]NSString* url = @"http://your.url/here"; NSURL* nsurl = [NSURL URLWithString:url]; NSMutableURLRequest* urlReq = [[NSMutableURLRequest alloc] initWithURL:nsurl]; NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:urlReq delegate:self]; while(!finished) { [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; } - (void) connectionDidFinishLoading:(NSURLConnection *)connection { finished = TRUE; }
整个过程是异步的,但delegate方法永远会在主线程执行
后续继续探讨这个问题。
随后在code4pp 发现了一些下载加载的类库。先暂时收藏一下。
http://code4app.com/ios/TCBlobDownload/5294aeadcb7e8482788b4f7c
2015-8-2 更新
今晚看到AFNetWorking 这个类的时候,看到关于NSURLSession相关的封装,于是其实很疑惑,想想每次IOS升级后,有时候采取删减API 有时候则会新增一个新的代替的方案 性能更加优秀 。NSURLConnection 讲到历史 基于IOS 7.0 的版本,如果使用这个IOS 6.0的用法又得遭殃了。但是苹果提及到NSURLSession和 NSURLConnection 是并列。所以两者都可以选择其一,当然更高的版本会选择NSURLSession ,为了兼容则会使用 NSURLConnection 来设计。
AFNetWorking 2.x版本后续也有相关的介绍。
记录一个在做进度显示遇到一个小问题。
NSString format的时候怎样显示百分号,度娘一下 这里的代码如下
如果单纯写%百分号则会发出警告而且显示不出来,加上%% 两个这样符号则可以显示出来了。
[code]float value = 55f; NSString *str = [NSString stringWithFormat:@"进度更新进度...%f%%",value ]; 输出的时候 可以显示百分比了 【进度更新进度...55%】
2015-8-6日
关于同步与异步,NSURLConnection 支持同步与异步的获取数据的方式,同步会发生阻塞,异步则不会。有时候需要使用同步,有时候则采取异步会更加友善。使用场景不一样,两种方式为获取数据带来便利。
NSURLConnection 同样支持代理模式、
英文单词
Synchronous 同步
Asynchronous 异步
下面为异步请求返回数据处理,错误机制等
[code]+ (void)sendAsynchronousRequest:(NSURLRequest*) request queue:(NSOperationQueue*) queue completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError)) handler NS_***AILABLE(10_7, 5_0);
下面为同步
[code] NSData * data = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error]; if(error == nil) { //处理数据如解析json数据 }
检测版本号,登录 则使用同步较为适合 ,像图片获取等非及时性 采取异步更加适合避免阻塞带来问题
相关文章推荐
- IOS时间格式转换
- Jenkins、Git、CocoaPods、Fir.im 实现 iOS 应用持续集成
- ios--NSCalendar NSDateComponents
- iOS设置标题栏文字颜色,以及设置导航栏背景颜色、文字颜色
- IOS崩溃日志分析
- iOS测试版本发布规范
- iOS NSTimer 定时器
- mimeType形式大全
- IOS 不能触发didSelectRowAtIndexPath事件的原因
- iOS生产版本发布规范
- iOS开发new与alloc/init的区别
- iOS获取当前的位置
- iOS开发new与alloc/init的区别
- ios开发学习1:开发的方法(转)
- iOS 锁屏强制切换屏幕的方向
- iOS 多线程NSThread
- iOS- 利用AFNetworking(AFN) - 实现图片上传 -
- 高德地图开发文档 iOS
- 27个提升效率的iOS开源库推荐
- iOS学习----------正则表达式