首页 > 代码库 > iOS 面试题之网络封装

iOS 面试题之网络封装

昨晚一电面,面试自己的。问我使用过AFNetWorking吗?

这个东西,说实在的,我用的不太多,除非一种情况,那就是我套用三方,使用别人写的时候,才用。。。一般我都是自己封的,用自己的。。。所以,一开始没答上来。

就简单说一下,我自己封的网络请求类

//
//  NetWrokHandler.h
//  封装网络请求
//
//  Created by 萨斯辈的呼唤 on 14-6-27.
//  Copyright (c) 2014年 萨斯辈的呼唤. All rights reserved.
//

#import <Foundation/Foundation.h>

typedef void(^BLOCK)(id result); // 定义一个block对象

@interface NetWrokHandler : NSObject

// block属性 要用copy修饰
@property (nonatomic, copy) BLOCK passValue;

+ (void)connectNetGETDataWithURLString:(NSString *)urlStr completion:(BLOCK)block;

// 让视图控制器在 传入参数的同时 临时定义一个block块
- (void)getDataWithURLString:(NSString *)urlStr comlietion:(BLOCK)block;

@end
//
//  NetWrokHandler.m
//  封装网络请求
//
//  Created by 萨斯辈的呼唤 on 14-6-27.
//  Copyright (c) 2014年 萨斯辈的呼唤. All rights reserved.
//

#import "NetWrokHandler.h"

@implementation NetWrokHandler

- (void)getDataWithURLString:(NSString *)urlStr comlietion:(BLOCK)block
{
    self.passValue = block;
    
    // 转换格式UTF8
    NSString *str = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    
    NSURL *url = [NSURL URLWithString:str];
    
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:30.0f];
    [request setHTTPMethod:@"GET"];
    // 异步请求
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        if (nil != data) {
            id object = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
            self.passValue(object);
        }
    }];
    
}

+ (void)connectNetGETDataWithURLString:(NSString *)urlStr completion:(BLOCK)block
{
    NetWrokHandler *network = [[NetWrokHandler alloc] init];
    [network getDataWithURLString:urlStr comlietion:block];
}

@end

只是单纯的异步GET请求数据。

只是偶尔的项目中使用过AFNetWorking,例如,之前做的旅游类的app中使用三方PAImageView时,使用过一次。。。其实我感觉吧,需要用,你便用。

AFNetworking 作为一个已死的 LBS 项目中对 Apple 范例代码的延伸。

AFNetWorking 一般用作初始化一个URL,实例化一个操作队列,便于后续的多线程操作。

AFHTTPRequestOperation 一般为http请求数据,获取解析好的JSON数据。

AFImageRequestOperation 用来下载和处理图片。(AFHTTPRequestOperation的一个子类)

AFJSONRequestOperation 用来处理JSON数据。AFHTTPRequestOperation的一个子类)

UIImageView+AFNetworking 异步加载图片

这些是我接触最多的也是用的最多的。虽然说,我用自己封装的网络类+SDWebImage便可应付所有的事情。如果老大说要,咱就得用,别的不说,听话是必须的。。。除非那天,我是老大了。。。

详细介绍AFNetWorking




iOS 面试题之网络封装