zoukankan      html  css  js  c++  java
  • post文件上传 tableview行高计算的优化 版本控制

    Post上传 都是封装在请求体中的

    1. 文件上传?????????????

       设置头像/产品评论  iOS中更没有封装  需要你自己去安iOS实现  最复杂的

    2.上传文件使用POST还是PUT请求????

       POST请求体没有长度限制  需要你把上传的内容封装在请求体中

    3.AFN中的POST请求

    创建网络工具管理类  

    AFHTTPManager  *manager

    悬着请求方法 

    manager post 

      把字典传递进去

    AFN 的一个缺点  就是在请求到数句了解析数据出错的时候了 不应该在失败

    应该是请求成功里面去返回失败

      post和get在AFN里买那些发没有区别

    4.怎么去AFN里面上传文件参数?????

    constructingBodyWithBlock

    post 的两外一种使用文件上传

    - (void)postUpload {

        AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];

        

        // 上传

        NSDictionary *params = @{@"username": @"da xiagua"};

        [mgr POST:@"http://localhost/upload/upload-m.php" parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

            

            /**

             参数 

             1. 本地文件 URL

             2. name: 负责上传文件的字段名,咨询公司的后端程序员,或者有文档

             3. error

             */

            NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"04.jpg" withExtension:nil];

            [formData appendPartWithFileURL:fileURL name:@"userfile[]" error:NULL];

            

            // 上传多个文件

            /**

             参数

             1. 本地文档件 URL

             2. name: 负责上传文件的字段名,咨询公司的后端程序员,或者有文档

             3. fileName: 保存在服务器的文件名

             4. mimeType: 告诉服务器上传文件的类型

             5. error

             */

            NSURL *fileURL2 = [[NSBundle mainBundle] URLForResource:@"AppIcon.jpg" withExtension:nil];

            [formData appendPartWithFileURL:fileURL2 name:@"userfile[]" fileName:@"001.jpg" mimeType:@"application/octet-stream" error:NULL];

        } success:^(NSURLSessionDataTask *task, id responseObject) {

            NSLog(@"%@", responseObject);

        } failure:^(NSURLSessionDataTask *task, NSError *error) {

            NSLog(@"%@", error);

        }];

    }

    5.内存暴涨的原因??????

    1.    2.下载完的数据存在内存里面   然后下载的数据速度大于上电脑的存入数据  

    I

    从github上面 git clone 出现了那个Xcode -select--switch 。。。。。可能的原因就是你的

    xcode不是从官网下载的 或者你安装了好几个版本的xcode

    解决办法   点击presence  --location --Command Line Tools 悬着一下就好了

    如何去检查你下载的框架有没有跟新呢,直接把目录拖拽过去

    然后直接去ls

    然后再去执行 git pull

    版本的控制

    你进公司了可能会让你先去看代码

    然后你可以新建一个分支 --然后在里面去写注释 或者怎么

    然后当你要真正的写一些小功能的时候你可以

    你在切换分支之前所有的修改都要提交commit   看到。m文件就没了 然后进去master switch进去

    你会发现你都回到你修改前的那个分支了分支的技巧

    tableview自动计算行高的时候  

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

     我们在设置了他的指定宽高   会发现在调用这个行高的方法时候也就是每次计算这个行高的时候   他会被调用了2+当前的行数

    为什么出现这么性能的方法  和版本有关系次数

    表格 是scrollview 的contsize确定了才可以滚动   这么多次就是为了准确的计算contensize

    另外一种法方法       estimateHeightForRowAtIndexPath

    预估行高    

    一旦实现了的话就只会调用当前行两次 而不是每次行都会加2次

    apple 官方文档是不推荐使用这个预估行高的代理方法   提倡使用属性之即去 viewdidload里面调用

    这样效率更高  这样的话可以在viewdidload里 main 去设置一个属性 可以省去了代理方法

       // 设置预估行高

        self.tableView.estimatedRowHeight = 200;

  • 相关阅读:
    流浪西邮之寻找火石碎片
    给你一个666
    似魔鬼的步伐
    括号匹配2019
    挑剔程度
    到底有到少个小和尚?
    获取任务栏所有正在运行程序
    EXTJS4创建多级菜单
    关于时间的一些理解
    kof97调隐藏人物
  • 原文地址:https://www.cnblogs.com/Ninesday/p/5438064.html
Copyright © 2011-2022 走看看