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

时间: 2024-08-03 20:24:24

iOS 面试题之网络封装的相关文章

iOS 面试题之网络数据解析

面试官问:说一下网络数据获取后的几种格式. 我:Json Xml格式数据,Json居多 面试官问:为什么Json居多? 我:因为= =服务器端这么写就这么用呗,只要提供数据,我哪里知道他给的是那种类型. ====================================================== 分析两者之间的区别:http://baike.baidu.com/view/136475.htm?fr=aladdin#6_1 总结如下: (1)可读性方面:基本相同,Xml的可读性比较

iOS开发——post异步网络请求封装

IOS中有许多网络请求的函数,同步的,异步的,通过delegate异步回调的. 在做一个项目的时候,上网看了很多别人的例子,发现都没有一个简单的,方便的异步请求的封装例子.我这里要给出的封装代码,是异步的,post的请求方式.通过ios的原生函数简单封装.通过这个封装可以方便的访问http服务器,获取数据,也可以容易的异步加载网络图片. 首先新建一个httpHelper类,在这个类里进行封装,封装的函数名称就叫做post,参数有请求的地址url,请求的参数params,返回数据后回调的函数blo

iOS开发项目篇—35封装网络请求

iOS开发项目篇—35封装网络请求 一.简单说明 1.分析项目对网路请求(AFN框架)的依赖 项目中,多个控制器都使用了AFN框架发送网络请求,如果AFN2.0存在重大BUg,或者是升级至3.0版本,那么对于整个项目都是及其危险的,所有用到AFN的地方都需要做出相应的修改. 另外,如果现在要求不再使用AFN框架,而是使用一个新的框架,那么有关AFN的依赖所关联的所有代码都需要重新来过. 如果把afn这个第三方框架从项目中删除的话,那么项目就相当于作废了,这就是项目对第三方框架的强依赖的体现. 说

最全的iOS面试题及答案-转载

1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承:可以实现多个接口,通过实现多个接口可以完成C++的多重继承:Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系. 2. #import 跟#include 又什么区别,@class呢, #import<> 跟 #import””又什么区别?

[转载]iOS面试题总

转载自:http://blog.sina.com.cn/s/blog_67eb608b0101r6xb.html (2014-06-13 20:23:33) 转载▼ 标签: 转载   crash 原文地址:iOS面试题总作者:唯一的弟子 1.简述OC中内存管理机制.与retain配对使用的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为什么?readwrite,readonly,assign,retain,copy,nonato

iOS面试题系列之Objective-C相关

1.简述你项目中常用的设计模式.它们有什么优缺点? 常用的设计模式有:代理.观察者.单例. (1)单例:它是用来限制一个类只能创建一个对象.这个对象中的属性可以存储全局共享的数据.所有的类都能访问.设置此单例中的属性数据. 优点:是它只会创建一个对象容易供外界访问,节约性能. 缺点:是一个类只有一个对象,可能造成责任过重,在一定程度上违背了"单一职责原则".单例模式中没有抽象层,所以单例类的扩展有很大的困难.不能过多创建单例,因为单例从创建到程序关闭前会一直存在,过多的单例会影响性能,

超全!iOS 面试题汇总

超全!iOS 面试题汇总 2015-10-20 CocoaChina 作者:Job_Yang 之前看了很多面试题,感觉要不是不够就是过于冗余,于是我将网上的一些面试题进行了删减和重排,现在分享给大家.(题目来源于网络,侵删) 1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好

iOS 笔试题-1

ios笔试题 有一篇面试题总结文章:http://www.onmoso.com/ios/356.html 原文地址:http://www.cnblogs.com/jiangshiyong/archive/2012/08/27/2657862.html 面试能力要求:精通iphone的UI开发,能熟练操作复杂表视图,熟练使用图层技术, 可以自定义UI控件,使用类别扩展系统控件功能; 擅长通讯技术,熟悉各种通信协议,精通xml, json, 二进制或其他形式的自定义解析,能架设服务器实现客户端与服务

iOS面试题及答案2015.6.7

iOS面试题及答案 1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系. 2. #import 跟#include 又什么区别,@class呢, #import<> 跟 #impo