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;