iOS——Manage封装网络请求

本文介绍如何通过单例模式封装网络请求,并使用Block传值处理响应。文章详细解释了单例模式的特点及其实现方法,包括使用static修饰全局变量以确保线程安全。同时,通过实例演示了如何在请求完成后解析并传递数据。
摘要由CSDN通过智能技术生成

用manage封装一个网络请求

上一篇文章中说到使用JSONModel,我们将请求内容写到了viewDidLo中,实际使用中肯定不能这么麻烦,我们有不同的网络请求,我们可以创建单例模式,与一个全局的manage类用实例manage来执行网络请求,用manage传递请求数据,在model中完成解析
我们会使用到:单例模式与Block传值

单例模式

使用单例模式的变量在整个程序中之需要创建一次,其生命周期是在他被使用时一直到程序结束后释放,类似于静态变量,所以我们需要考虑其生命周期,唯一性以及线程安全

static修饰全局变量

作用域仅限于当前文件,外部类无法访问到该全局变量,在默认情况下,全局变量在整个程序中是可以被访问的(作用域为整个项目)
为保证线程安全,我们要使用dispatch_once:(保证程序只运行一次)
在这里插入图片描述
在manage文件中
在上一篇文章中,我们创建了testModel文件,我们需要将其引入manage文件中,其文件是用来接受传回来的值的

在这里插入图片描述我们一共需要完成两个函数进行请求
除了单例的初始化之外,还有网络请求的函数在这里插入图片描述
我们需要在完成网络请求的时候添加两个block传值,用来判断是否错误,传回不同的值
在这里插入图片描述
这是成功在这里插入图片描述

如果我们断网请求
在这里插入图片描述

implementation中的方法

@implementation Top_StoriesModel
//+ (BOOL)propertyIsOptional:(NSString *)propertyName 作用是不想因为服务器的某个值没有返回(nil)就使程序崩溃, 可以加关键字Optional,如果不想每一条属性都添加,也可以在.m文件中重写方法
+ (BOOL)propertyIsOptional:(NSString *)propertyName {
    return YES;
}
@end

关于此方法值得注意的是,如果一个网址有很多数据,但是我们只想要其中的几个多余的不要,如果我们不添加这个函数就会请求出错在这里插入图片描述
在这里插入图片描述
可以看到会请求到“空”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值