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;

原文地址:https://www.cnblogs.com/Ninesday/p/5438064.html