iOS 使用AFNetworking-----cpf

http://blog.sina.com.cn/s/blog_a5243c7f0101ovq5.html


下载: 

网址 --  github

二 环境:
    需要引入的库 -CoreLocation.framework
    SystemConfiguration.framework
    MobileCoreServices.framework
    Security.framework

解决编译时警告:

Prefix.pch文件中加入

#import <SystemConfiguration/SystemConfiguration.h>

#import <MobileCoreServices/MobileCoreServices.h>


    需要在 ARC 的环境下 - 非 ARC的工程中 - 请添加 -fobjc-arc 

三 结构:
1 : AFHTTPClient    --    提供了一个方便的网络交互接口,包括默认头,身份验证,是否连接到网络,批量处理操作,查询字符串参数序列化,已经多种表单请求

2 :AFHTTPRequestOperation  -- 
和它得子类可以基于http状态和内容列下来区分是否成功请求了

3 :AFURLConnectionOperation   -- 
和它的子类继承NSOperation的,允许请求被取消,暂停/恢复和由NSOperationQueue进行管理。

4 :AFURLConnectionOperation   -- 
可以让你轻松得完成上传和下载,处理验证,监控上传和下载进度,控制的缓存。

四 使用 :

用法场景 1 :请求api数据

方法1 --

创建一个 AFHTTPClient 实例

AFHTTPClient * client = [[AFHTTPClient alloc]initWithBaseURL:[NSURLURLWithString:@"http://api.jiepang.com"]];
// 这里一定要有一个 baseURL - 不然会抛出一个异常 -- 

创建一个 NSURLRequest 实例

NSDictionary * params = @{@"apiver": @"4",@"id" :@"830755858",@"extra_info": @"1"};
        NSURLRequest* request = [client requestWithMethod:@"POST"
                                                                                            path:@"users/show"
                                                                                parameters:params];

        @param  method 网络请求方式,比如 GET,POST,PUT,DELETE , 不能为nil -- 
        @param  path    和 baseURL 组合成为一个 url  -- 通俗的说,就是我们调用的接口 --比如,我想调用http://api.jiepang.com/users/show,这个接口 -- 那么 baseURL 为http://api.jiepang.com -- path为users/show 
        @param  parameters 网络请求参数 --http://api.jiepang.com/v1/users/show?id=123 -- id=123 就是这个参数


创建一个 AFHTTPRequestOperation 实例进行网络链接

AFHTTPRequestOperation * operation = [clientHTTPRequestOperationWith Request:requestsuccess:^(AFHTTPRequestOperation *operation, id responseObject){
               
                NSLog(@"successobj == %@",responseObject);
               
        }failure:^(AFHTTPRequestOperation *operation, NSError *error){
               
                NSLog(@"faild, error == %@ ", error);
        }];

        [operationstart];

        这样- 一次简单的调用就OK了 - 

        当然也可以,用封装好的其它方法-- 
        -(void)getPath:(NSString *)path
          parameters:(NSDictionary*)parameters
                success:(void(^)(AFHTTPRequestOperation *operation, idresponseObject))success
                failure:(void(^)(AFHTTPRequestOperation *operation, NSError*error))failure;

        -(void)postPath:(NSString *)path
            parameters:(NSDictionary*)parameters
                  success:(void(^)(AFHTTPRequestOperation *operation, idresponseObject))success
                  failure:(void(^)(AFHTTPRequestOperation *operation, NSError*error))failure;

        -(void)putPath:(NSString *)path
          parameters:(NSDictionary*)parameters
                success:(void(^)(AFHTTPRequestOperation *operation, idresponseObject))success
                failure:(void(^)(AFHTTPRequestOperation *operation, NSError*error))failure;

        -(void)deletePath:(NSString *)path
                parameters:(NSDictionary*)parameters
                      success:(void(^)(AFHTTPRequestOperation *operation, idresponseObject))success
                      failure:(void(^)(AFHTTPRequestOperation *operation, NSError*error))failure;

- (void)patchPath:(NSString *)path
parameters:(NSDictionary *)parameters
  success:(void (^)(AFHTTPRequestOperation*operation, id responseObject))success
  failure:(void (^)(AFHTTPRequestOperation*operation, NSError *error))failure;


省去了组装 Resquest 的时间   --
比如 - 

方法二 --

        [clientgetPath:path
          parameters:params
                success:^(AFHTTPRequestOperation*operation, id responseObject) {

                                      NSString* obj = [[NSString alloc] initWithData:responseObjectencoding:NSUTF8StringEncoding];

                                      NSLog(@"obj== %@",obj);
                }failure:^(AFHTTPRequestOperation *operation, NSError *error){

                        NSLog(@"faild-- ");
                }];

        这和上面的效果是一样的-- 

        我们看到,前面返回的数据全部为NSdata - 为我们添加了麻烦 -- 而且我们大部分的 api 返回数据都为 json-- 
        同样- 我们可以用 AFHTTPRequestOperation 的子类 AFJSONRequestOperation 来替代-- 

        方法三-- 

              NSDictionary* params = @{@"apiver": @"4",@"id" : @"830755858",@"extra_info":@"1"};
       
       
AFHTTPClient * client = [[AFHTTPClient alloc]initWithBaseURL:[NSURLURLWithString:@"http://api.jiepang.com"]];
       
        NSURLRequest* request = [client requestWithMethod:@"POST"
                                                                                                    path:@"users/show"
                                                                                        parameters:params];
       
       
        AFJSONRequestOperation* operation = [AFJSONRequestOperationJSONRequestOperationWith Request:requestsuccess:^(NSURLRequest *request, NSHTTPURLResponse *response, idJSON) {
               
                NSLog(@"json== %@",JSON);
        }failure:^(NSURLRequest *request, NSHTTPURLResponse *response,NSError *error, id JSON) {
               
                NSLog(@"faild-- ");
        }];
       
        [operationstart];



        使用场景 2 :异步加载图片 

        AFImageRequestOperation是继承自 AFHTTPRequestOperation -- 所以 - 方法大同小异-- 

        NSString* url =@"http://c.hiphotos.baidu.com/album/w=2048/sign=1d7ca85bac345982c58ae292 38cc30ad/f2deb48f8c5494ee7abe3336 2cf5e0fe99257e04.jpg";
        //这是一个大美女
       
        创建request
        NSURLRequest* request = [NSURLRequest requestWithURL:[NSURLURLWithString:url]
                                                                                            cachePolicy:NSURLRequestReloadIgnori ngLocalCacheData
                                                                                    timeoutInterval:30];
       
        AFImageRequestOperation* operation = [AFImageRequestOperationimageRequestOperationWit hRequest:request
                                                                                                                                                              imageProcessingBlock:^UIImage*(UIImage *image) {
                                                                                                                                                                     
                                                                                                                                                                      UIImage* tempImage = [UIImage imageWithCGImage:
                                                                                                                                                                                                                  CGImageCreateWithImageIn Rect(image.CGImage,ake(0,0, image.size.width, image.size.height/2.0))];
                                                                                                                                                                     
                                                                                                                                                                      returntempImage;
                                                                                                                                                                     
                                                                                                                                                              }success:^(NSURLRequest *request, NSHTTPURLResponse *response,UIImage *image) {
                                                                                                                                                                     
                                                                                                                                                                      NSLog(@"reloadimage success ");
                                                                                                                                                                     
                                                                                                                                                                      _imageView.image= image;
                                                                                                                                                              }failure:^(NSURLRequest *request, NSHTTPURLResponse *response,NSError *error) {
                                                                                                                                                                     
                                                                                                                                                                      NSLog(@"reloadimage faild , error == %@ ",error);
                                                                                                                                                                     
                                                                                                                                                              }];
       
        [operationstart];

        这个方法里有三个block,success 和 failure 不说 -- processimageBlock -- 是在 图片加载完后,对 图片 处理的block ,可以为 nil ,在 success 之前调用   --

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值