• ios-ASIHTTPRequest下载与进度条以及用观察者模式来监听进度条属性


    UIProgressView *uiprogressview= [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleBar];//建立一个进度条
        uiprogressview.frame=CGRectMake(50, 100, 200, 20);
        uiprogressview.tag=10;
        [self.window addSubview:uiprogressview];
        //通过观察者模式来检测这个属性
        [uiprogressview addObserver:self forKeyPath:@"progress" options:NSKeyValueObservingOptionNew context:nil];
        NSString * fileurlstring=@"http://free2.macx.cn:81/tools/system/CleanMyMac-v1-10-8.dmg";
        NSString *downloadpath=[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
        NSString *filename=[fileurlstring lastPathComponent];
        NSString *downloadpath_now=  [downloadpath stringByAppendingPathComponent:filename];
        ASIHTTPRequest*request= [[ASIHTTPRequest alloc]initWithURL:[NSURL URLWithString:fileurlstring]];
        [request setDownloadDestinationPath:downloadpath_now];//设置存储路径
        [request setDownloadProgressDelegate:[self.window viewWithTag:10]];//绑定一个进度条
        [request setHeadersReceivedBlock:^(NSDictionary *responseHeaders) {
            NSLog(@"%@",responseHeaders);//里面包含了数据大小的那些内容
        }];//当服务器做出响应后调用的block,返回的一个响应头,同理有请求头
        [request startAsynchronous];//启动异步下载


    -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    
        NSLog(@"%@",keyPath);
      NSNumber *nuber=  [change objectForKey:@"new"];//同理也有old如果你传了的话
      float ff=  [nuber floatValue];
        NSLog(@"%.1f%%",ff*100);
        
    }
    //说明一下这个属性keyPath就是指监听的属性,object就是指的监听的是哪个对象的属性,change里面放的就是一些改变值,context就是你注册监听的时候传的什么就是什么

     

    心得,异步请求都是有个请求队列的,就像gcd一样,线是穿件一个线程,再到线程里面创建一个请求队列,再往请求队里里面丢要执行的事情(包括request),当然这里的组合就随机了,你可以是有个请求(request),丢到一个默认的队列里面去执行就是了,队列可以控制最大并发数量。

    你也可以有个队列(queue),在往队列里丢请求或者其他

    1.这里只记录一些学习笔记 2.这里只记录一些学习心得,如果心得方向有错,请留言 2.这里只记录一些日记(只为提升英语,暂时有点忙,等转行了开始写)
  • 相关阅读:
    【转】为什么要报考系统架构设计师考试
    前端三大主流框架中文文档
    零散知识点-类的区别;函数式编程的简单总结;
    window.location相关方法
    Hybrid相关
    php中file_get_contents与curl的区别
    三级下拉菜单
    微信生成带参数二维码及响应操作
    开发中因长时间不用而遗忘的,持续补充中。。
    项目中用到的几个工具函数
  • 原文地址:https://www.cnblogs.com/liyang31tg/p/3664945.html
Copyright © 2020-2023  润新知