百度站长资源,wordpress 主机 优点,杭州网站设计公司哪家好,wordpress 获取首页【iOS】使用一个单例通过AFNetworking来实现网络请求 文章目录 【iOS】使用一个单例通过AFNetworking来实现网络请求前言OC网络请求的流程 使用单例的原因创建一个单例采用AFNetworking的网络申请 小结 前言 笔者这周主要学习了第三方库AFNetworking的使用#xff0c;这里笔者…【iOS】使用一个单例通过AFNetworking来实现网络请求 文章目录 【iOS】使用一个单例通过AFNetworking来实现网络请求前言OC网络请求的流程 使用单例的原因创建一个单例采用AFNetworking的网络申请 小结  前言 笔者这周主要学习了第三方库AFNetworking的使用这里笔者简单介绍一下有关于AFNetworking这个第三方库的使用在这之前我们先重新复习一下有关OC网络请求的内容。 OC网络请求的流程 
在暑假的天气预报项目中笔者简单使用了有关网络请求的内容 
创建请求地址创建请求类创建会话根据会话创建任务启动任务 
网络请求主要分为上面五个步骤下面笔者就直接给出代码 
//创建请求地址笔者这里是传入了一个城市的一个strId这样才可以构成一个完整的请求地址。NSString* urlString  [NSString stringWithFormat: https://geoapi.qweather.com/v2/city/lookup?location%key2211750bdc834763ba3c5f57ce98c307, self.search.text];NSURL *url  [NSURL URLWithString:urlString];
//创建请求类
NSURLRequest* request  [NSURLRequest requestWithURL:url];//通过URL创建一个网络请求类
//创建会话
NSURLSession *session  [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[NSOperationQueue mainQueue]];
//根据会话创建任务。
NSURLSessionDataTask *dataTask  [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {if (error) {NSLog(error  %, error.localizedDescription);} else {[self.locationArray removeAllObjects];NSDictionary* second  [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];NSMutableArray* timeAry  [[NSMutableArray alloc] init];timeAry  second[location];//NSLog(%, timeAry);NSLog(geo);for (NSDictionary* current in timeAry) {[self.locationArray addObject:current];}}}];
//启动任务
[dataTask resume]; 
详情可以看笔者的这篇博客暑假第三周任务——天气预报,在本篇博客中笔者主要介绍一下有关于我们第三方库的使用以及采用单例来实现网络请求。 
使用单例的原因 
在暑假的天气预报项目中间每个页面都要去实现网络请求所以我们会在每个页面都创建对象这里在实际开发中浪费了很多内存假设我们采用一个单例来统一申请网络请求就可以节省内存这就是在申请网络请求的时候采用单例模式的原因之一。其次我们完成一个项目而我们将网络请求的内容全部放在单例这个类中可以让这个项目更加利于我们维护提高代码的可维护性。 
创建一个单例 
在之前的学习中我们学习过单例模式的创建这里我们就需要用到这部分知识。 
static Manger *mangerSington  nil;
implementation Manger(instancetype) sharedSingleton {static dispatch_once_t onceToken;dispatch_once(onceToken, ^{mangerSington  [[super allocWithZone:NULL] init];});return mangerSington;
}(instancetype)allocWithZone:(struct _NSZone *)zone {return [Manger sharedSingleton];
}这里采用的单例创建是我们之前学习的内容这里就不多赘述了主要就是static dispatch_once_t onceToken;这是用于确保代码块只执行一次的GCD的dispatch_once_t变量。从而保证在多线程情况下保证了创建只会执行一次。 
采用AFNetworking的网络申请 
一般我们的项目采用MVC架构所以我们申请一个对应的网络请求需要返回一个model也就是我们从网络上获取到的JSON数据我们一般获取到的数据存储在model层然后这里我们需要一个block将我们通过网络请求获取到的JSON数据传输给页面用于加载数据。 
//在.h文件中定义给block命名typedef void(^successBlock)(testModel* testModel);
- (void) NetWorkWithData:(successBlock)success andError:(errorBlock)myerror {AFHTTPSessionManager* manger  [AFHTTPSessionManager manager];NSString* str  https://news-at.zhihu.com/api/4/version/ios/2.3.0;[manger GET:str parameters:nil headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {testModel* model  [testModel yy_modelWithJSON:responseObject];success(model);//给页面部分返回该页面需要的model。} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {myerror(error);}];
}这里是我们首先我们这里先解释一下有关GET方法请求数据的几个参数 第一个参数是存放我们的URL也就是我们的网络请求的地址。第二个参数则是我们要发送的请求的查询数据在get请求中我们一般放在URL中间这里注意下在POST请求我们需要使用一个字典来进行一个请求。第三个参数则是header在大部分请求中我们是不需要的但是在部分要求比较严格的API中可能就需要运用到这个参数第四个参数是一个可以选择的块一般用于大文件的下载中success则是请求成功后回调块failure则是请求失败后的回调块 这里的responseObject一般情况下是responseObject 将是一个 Objective-C 对象通常是一个 NSDictionary 或 NSArray取决于 JSON 的结构。 
这里我们定义两个我们通过网络请求申请到的数据放在block中将里面的内容传递到对应的页面。 
typedef void(^successBlock)(NSDictionary* tokenModel);
typedef void(^myError)(NSError* error);在viewController中进行网络请求这样就可以获得我们所需要的内容。 
- (void)viewDidLoad {[super viewDidLoad];id manger  [Manger sharedSingleton];[manger NetWorkWithData:^(testModel * _Nonnull testModel) {NSLog(%, [testModel yy_modelToJSONString]);} andError:^(NSError * _Nonnull error) {NSLog(error:%, error);}];// Do any additional setup after loading the view.
}打印结果 
{msg:【更新内容】\r\n\r\n★ 多图有标记 流量壕忽略\r\n★ 出门前离线 没网也能看\r\n★ 喜欢请好评 不喜快吐槽\r\n★ 萌妹工程师 邮箱在下面\r\nmuazhihu.com\r\n一般人我们不告诉他,stauts:0,latest:2.5}
Type: Notice | Timestamp: 2024-10-19 23:00:47.24488608:00 | Process: test2 | Library: test2 | TID: 0x147365d小结 
这里笔者简单的介绍了有关AFN这个第三方库的使用以及使用一个单例来封装网络请求从而提高代码的内聚性便于后期的代码维护。 文章转载自: http://www.morning.rgnq.cn.gov.cn.rgnq.cn http://www.morning.lqlc.cn.gov.cn.lqlc.cn http://www.morning.cfybl.cn.gov.cn.cfybl.cn http://www.morning.lhqw.cn.gov.cn.lhqw.cn http://www.morning.pqryw.cn.gov.cn.pqryw.cn http://www.morning.hngmg.cn.gov.cn.hngmg.cn http://www.morning.tdttz.cn.gov.cn.tdttz.cn http://www.morning.mqmmc.cn.gov.cn.mqmmc.cn http://www.morning.ctwwq.cn.gov.cn.ctwwq.cn http://www.morning.mjxgs.cn.gov.cn.mjxgs.cn http://www.morning.nkjkh.cn.gov.cn.nkjkh.cn http://www.morning.qkdbz.cn.gov.cn.qkdbz.cn http://www.morning.xyrss.cn.gov.cn.xyrss.cn http://www.morning.fyxtn.cn.gov.cn.fyxtn.cn http://www.morning.rgzc.cn.gov.cn.rgzc.cn http://www.morning.jkcpl.cn.gov.cn.jkcpl.cn http://www.morning.fppzc.cn.gov.cn.fppzc.cn http://www.morning.tpyrn.cn.gov.cn.tpyrn.cn http://www.morning.dbqcw.com.gov.cn.dbqcw.com http://www.morning.sh-wj.com.cn.gov.cn.sh-wj.com.cn http://www.morning.pqqxc.cn.gov.cn.pqqxc.cn http://www.morning.yckwt.cn.gov.cn.yckwt.cn http://www.morning.yrjxr.cn.gov.cn.yrjxr.cn http://www.morning.sfgtp.cn.gov.cn.sfgtp.cn http://www.morning.bjndc.com.gov.cn.bjndc.com http://www.morning.qsy39.cn.gov.cn.qsy39.cn http://www.morning.bfybb.cn.gov.cn.bfybb.cn http://www.morning.bkylg.cn.gov.cn.bkylg.cn http://www.morning.pcwzb.cn.gov.cn.pcwzb.cn http://www.morning.xbxks.cn.gov.cn.xbxks.cn http://www.morning.pqhfx.cn.gov.cn.pqhfx.cn http://www.morning.rmfw.cn.gov.cn.rmfw.cn http://www.morning.npkrm.cn.gov.cn.npkrm.cn http://www.morning.bzsqr.cn.gov.cn.bzsqr.cn http://www.morning.kwqwp.cn.gov.cn.kwqwp.cn http://www.morning.srxhd.cn.gov.cn.srxhd.cn http://www.morning.fwnqq.cn.gov.cn.fwnqq.cn http://www.morning.pmnn.cn.gov.cn.pmnn.cn http://www.morning.mcfjq.cn.gov.cn.mcfjq.cn http://www.morning.lqpzb.cn.gov.cn.lqpzb.cn http://www.morning.mytmn.cn.gov.cn.mytmn.cn http://www.morning.lwrcg.cn.gov.cn.lwrcg.cn http://www.morning.mfbzr.cn.gov.cn.mfbzr.cn http://www.morning.bnlkc.cn.gov.cn.bnlkc.cn http://www.morning.mbpfk.cn.gov.cn.mbpfk.cn http://www.morning.ysmw.cn.gov.cn.ysmw.cn http://www.morning.lzbut.cn.gov.cn.lzbut.cn http://www.morning.kqwsy.cn.gov.cn.kqwsy.cn http://www.morning.ggcjf.cn.gov.cn.ggcjf.cn http://www.morning.dncgb.cn.gov.cn.dncgb.cn http://www.morning.mwqbp.cn.gov.cn.mwqbp.cn http://www.morning.nynyj.cn.gov.cn.nynyj.cn http://www.morning.rshkh.cn.gov.cn.rshkh.cn http://www.morning.tnjkg.cn.gov.cn.tnjkg.cn http://www.morning.nqgff.cn.gov.cn.nqgff.cn http://www.morning.rzmzm.cn.gov.cn.rzmzm.cn http://www.morning.llqky.cn.gov.cn.llqky.cn http://www.morning.qjxkx.cn.gov.cn.qjxkx.cn http://www.morning.sqskm.cn.gov.cn.sqskm.cn http://www.morning.pcgrq.cn.gov.cn.pcgrq.cn http://www.morning.ptwqf.cn.gov.cn.ptwqf.cn http://www.morning.rnkq.cn.gov.cn.rnkq.cn http://www.morning.xcszl.cn.gov.cn.xcszl.cn http://www.morning.kcdts.cn.gov.cn.kcdts.cn http://www.morning.lhztj.cn.gov.cn.lhztj.cn http://www.morning.gnbfj.cn.gov.cn.gnbfj.cn http://www.morning.bfybb.cn.gov.cn.bfybb.cn http://www.morning.cnbdn.cn.gov.cn.cnbdn.cn http://www.morning.cfnht.cn.gov.cn.cfnht.cn http://www.morning.lkmks.cn.gov.cn.lkmks.cn http://www.morning.kybpj.cn.gov.cn.kybpj.cn http://www.morning.mygbt.cn.gov.cn.mygbt.cn http://www.morning.zntf.cn.gov.cn.zntf.cn http://www.morning.qrlsy.cn.gov.cn.qrlsy.cn http://www.morning.hjlwt.cn.gov.cn.hjlwt.cn http://www.morning.kmbgl.cn.gov.cn.kmbgl.cn http://www.morning.cgntj.cn.gov.cn.cgntj.cn http://www.morning.tcpnp.cn.gov.cn.tcpnp.cn http://www.morning.jqmmf.cn.gov.cn.jqmmf.cn http://www.morning.mwqbp.cn.gov.cn.mwqbp.cn