弃用的异步get和post方法之Block方法

 1 #import "ViewController.h"
 2 #import "Header.h"
 3
 4 @interface ViewController () <NSURLConnectionDataDelegate>
 5
 6 @property (nonatomic, strong) NSMutableArray *dataArray;
 7
 8 @end
 9
10 @implementation ViewController
11
12 // 懒加载
13 - (NSMutableArray *)dataArray {
14
15     if (!_dataArray) {
16         _dataArray = [NSMutableArray array];
17     }
18     return _dataArray;
19 }
20
21
22 - (void)viewDidLoad {
23     [super viewDidLoad];
24     // Do any additional setup after loading the view, typically from a nib.
25 }
26
27 #pragma mark - get异步请求
28 - (IBAction)getAsynchronousRequset:(UIButton *)sender {
29
30     // 1.创建url
31     NSURL *url = [NSURL URLWithString:GET_URL];
32
33
34     // 2.创建请求
35     NSURLRequest *request = [NSURLRequest requestWithURL:url];
36
37
38     // 3.链接服务器
39     // 方法一:Block方法实现
40     // 第一个参数:请求对象
41     // 第二个参数:线程队列
42     [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
43         // response是携带的接口信息
44         // data请求下来的数据,接下来会会使用到的
45         // connectionError错误信息
46         if (connectionError == nil) {
47
48             // 4.解析
49             NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
50
51             NSLog(@"%@", dic);
52
53             // 先开辟子线程解析数据,然后在主线程里刷新UI
54         }
55
56     }];
57
58 }
59
60
61 #pragma mark - post异步请求
62 - (IBAction)postAsynchronousRequset:(UIButton *)sender {
63
64     // 1.创建url
65     NSURL *url = [NSURL URLWithString:POST_URL];
66
67
68     // 2.创建请求
69     NSMutableURLRequest *mutableRequest = [NSMutableURLRequest requestWithURL:url];
70
71
72     // 2.5.设置body
73     // 创建一个连接字符串(这个内容在以后的开发中接口文档都有标注)
74     NSString *dataStr = POST_BODY;
75
76     // 对连接字符串进行编码【这一步千万不能忘记】
77     NSData *postData = [dataStr dataUsingEncoding:NSUTF8StringEncoding];
78
79     // 设置请求格式为post请求【在这里POST必须大写】
80     [mutableRequest setHTTPMethod:@"POST"];
81
82     // 设置请求体(body)
83     [mutableRequest setHTTPBody:postData];
84
85
86     // 3.链接服务器
87     // 方法一:Block方法
88     [NSURLConnection sendAsynchronousRequest:mutableRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
89
90         if (connectionError == nil) {
91             // 4.解析
92             NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
93             NSLog(@"%@", dic);
94         }
95     }];
96
97 }
时间: 2024-11-08 20:41:16

弃用的异步get和post方法之Block方法的相关文章

[C#学习笔记之异步编程模式2]BeginInvoke和EndInvoke方法 (转载)

为什么要进行异步回调?众所周知,普通方法运行,是单线程的,如果中途有大型操作(如:读取大文件,大批量操作数据库,网络传输等),都会导致方法阻塞,表现在界面上就是,程序卡或者死掉,界面元素不动了,不响应了.异步方法很好的解决了这些问题,异步执行某个方法,程序立即开辟一个新线程去运行你的方法,主线程包括界面就不会死掉了.异步调用并不是要减少线程的开销, 它的主要目的是让调用方法的主线程不需要同步等待在这个函数调用上, 从而可以让主线程继续执行它下面的代码. BeginInvoke方法可以使用线程异步

.NET基础架构方法—DataTableToExcel通用方法

p { display: block; margin: 3px 0 0 0; } --> .NET架构基础方法—DataTableToExcel通用方法(NPOI) 今天封装DataTaleToExcel通用方法,也是大家开发中特别常用的.首先去下载NPOI,链接http://npoi.codeplex.com/ ,使用包中的net4.0版本的dll,全部引用.官网中已经给了足够的示例,我只拿来异步分,给类命名为ExcelTools.cs .下面上代码 1 using System; 2 usi

编写高质量代码改善C#程序的157个建议[为泛型指定初始值、使用委托声明、使用Lambda替代方法和匿名方法]

前言 泛型并不是C#语言一开始就带有的特性,而是在FCL2.0之后实现的新功能.基于泛型,我们得以将类型参数化,以便更大范围地进行代码复用.同时,它减少了泛型类及泛型方法中的转型,确保了类型安全.委托本身是一种引用类型,它保存的也是托管堆中对象的引用,只不过这个引用比较特殊,它是对方法的引用.事件本身也是委托,它是委托组,C#中提供了关键字event来对事件进行特别区分.一旦我们开始编写稍微复杂的C#代码,就肯定离不开泛型.委托和事件.本章将针对这三个方面进行说明. 本文已更新至http://w

部分类、静态类、Object类、ToString()方法、扩展方法的使用

部分类.静态类.Object类.ToString()方法.扩展方法的使用 一:部分类: 前言:partial关键字允许将类.结构.方法或者接口放在多个文件中.一般情况下,一个类全部驻留在单个文件中.但有时,多个开发人员需要访问同一类的时候,或者某种类型的代码生成器生成了一个类的某部分.所以把类放在多个文件中是有益的. 如果声明类时使用了下面的关键字.这些关键字就必须应用于同一个类中的所有的部分: public  private  protected  internal  abstract  se

方法重写和方法重载

重写和重载虽然都有一个共同点是发生在方法之间,但是两者之间没有任何的关系! 方法重载:是指一个类中有多个方法,这些方法的名字一样,但是形参不一样 方法重写:发生在子类和父类之间,当子类继承了父类之后,子类就拥有了父类中定义的方法,当然除了构造器没有继承,子类可以去调用父类的方法,也可以重写,在子类中重写父类的方法,保证方法名一样,形参也要一样吧,这样子类再访问这个方法时就会默认使用这个在子类中被重写的方法,而不是父类中那个被覆盖的方法. 当然,我们如果想在子类中使用父类中被覆盖的方法,我们可以使

xss注入方法及验证方法

注:本文描述的是一般情况的xss注入方法及验证方法,并无覆盖所有xss情况, 步骤1:在任一输入框中输入以下注入字符 >"'><script>alert(XSS)</script> >"'><img src="javascript:alert(123456)"> 1234<%00script>alert("123456")</script> &{alert

golang使用reflects调用方法时,方法名需要首字母大写

golang在服务端处理api请求,因为在其他语言中定义方法一般使用小写开头, 给服务端传递ApiName时一般使用的是小写首字母的方法名. 如果直接使用小写方法名定义方法,将无法通过golang的reflect反射获取和调用. 建议在增加前缀"API_"    如 API_login来定义Api结构的方法 type Api struct{ } func(this *Api)API_login(){ } requestStr := "usr/login/HYUKGDHJHDY

Javascript的私有变量和方法、共有变量和方法以及特权方法、构造器、静态共有属性和静态共有方法

一.私有变量:定义在函数内部的属性和方法称之为该函数的私有属性和方法        共有变量:在函数内部通过this创建的对象和方法称之为该函数的共有属性和方法 特权方法:通过this创建的既可以访问该函数的共有属性和方法,也可以访问该函数的私有属性和方法称之为特权方法 构造器:对象在创建的时候调用特权方法来初始化实例的属性,这个方法也称为构造器 /** * 类的内部私有属性.私有方法.特权方法.共有属性和共有方法以及构造器 * @param id * @param bookname * @pa

方法重写与方法重载

继承和多态都是面向对象程序设计的特点.使用继承可以在一个父类的基础上再创建一个子类,这个子类不但拥有父类已有的属性和方法,还可以创建属于自己的属性和方法.由于子类和父类之间的关系,从而引出了方法重写和方法重载的问题.方法重写及方法重载在继承和多态性方面的应用中会存在很多问题,这些概念很容易混淆,掌握重写和重载的区别对学会使用多态的方式编写程序.提高程序的可维护性奠定了基础. 一.方法重写(0veriding)如何定义重写:在Java程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类