链式语法的使用
来源:互联网 发布:宾馆管理系统数据库 编辑:程序博客网 时间:2024/06/02 10:29
目的:为了使得代码更加容易读懂
_client = [[IZKJHttpsClientalloc]init];
SoapSuccess success = ^(id_Nullable data) {
__strongtypeof(weakwelf) stronglyself =weakwelf;
// DaLog(@"%@",data);
if (!stronglyself)return ;
NSArray* dicar = (NSArray*) data;
for (NSDictionary*dicin dicar) {
InformationModel * info = [[InformationModelalloc]initWithResponseDic:dic];
[stronglyself.tabelModelaraddObject:info];
}
[stronglyself.tableViewreloadData];
};
SoapFail failure = ^(id_Nullable faildata) {
};
_client.codeandNecInfoForFetch(@"0103",info)
.success(success)
.failure(failure)
.resume();
等同于如下写法_client.codeandNecInfoForFetch(@"0103",info).success(success).failure(failure).resume();
来看实现文件.h
- (IZKJHttpsClient*(^)(NSString *code,NSString *info))codeandNecInfoForFetch;
- (IZKJHttpsClient*(^)(NSString *code,NSString *info))codeandNecInfoForPush;
- (IZKJHttpsClient*(^)(SoapSuccess))success;
- (IZKJHttpsClient*(^)(SoapFail))failure;
- (IZKJHttpsClient*(^)())resume;
以及.m
- (IZKJHttpsClient *(^)(NSString *,NSString *))codeandNecInfoForFetch {
return ^IZKJHttpsClient*(NSString *code,NSString *info) {
self.soapMsg = [selfpreparefetchSoapMsg:codeNecInfo:info];
self.accessway =KaccessWaypost;
returnself;
};
}
- (IZKJHttpsClient *(^)(NSString *,NSString *))codeandNecInfoForPush {
return ^IZKJHttpsClient*(NSString *code,NSString *info) {
self.soapMsg = [selfpreparepushSoapMsg:code NecInfo:info];
self.accessway =KaccessWayupdate;
returnself;
};
}
- (IZKJHttpsClient *(^)(SoapSuccess))success {
return ^IZKJHttpsClient*(SoapSuccess sucessblock) {
self.successBlock = sucessblock;
returnself;
};
}
- (IZKJHttpsClient *(^)(SoapFail))failure {
return ^IZKJHttpsClient*(SoapFail failblock) {
self.failBlock = failblock;
returnself;
};
}
-(IZKJHttpsClient *(^)())resume {
return ^IZKJHttpsClient*() {
//得到所有网络访问必须的要素开始工作
[selfstartWork];
returnself;
};
}
显然 因为在此语法中 方法返回的对象是自身,而这个自身是带有block回调块的
并且在方法中实现了block回调块的内容,其实是携带了自身赋值和传值功能的
因此
_client.codeandNecInfoForFetch(@"0103",info).success(success).failure(failure).resume();
这种写法就可以不同的通过回调自身来达到链式传入数值在自身的类里面对该数值进行处理的效果
而给出的例子实际上在最后一次的resume中的方法是执行了相应的网络访问的请求
而回调的block代码块则是前面的SoapSuccess和SoapFail
就会回到之前的方法来对下载来的数据进行处理的逻辑
- 链式语法的使用
- OC的链式语法
- 链式语法
- 谈谈 Objective-C 链式语法的实现
- AngularJS的链式(chaining)语法
- OC实战: ARC 下使用 Block 实现链式语法
- HTML5--外链式的使用
- Objc实现链式语法
- 链式语法—学习
- 使用Golang实现栈的链式存储
- iOS-OC创建链式语法(链式编程)
- 使用ActionScript的语法
- seo语法的使用
- velocity的使用-语法
- Block语法的使用
- Block语法的使用
- react的使用语法
- 使用动态分配的链式结构实现的二叉搜索树
- python 网络编程socket
- ANDROID 开发常用的框架、工具、API
- codeforces 724B 暴力+枚举
- php mysql 中文乱码解决方法
- [PHP基础][03]关于php的运算符
- 链式语法的使用
- thinking in java 4th 读书笔记
- C++设计模式-Observer观察者模式
- MyBatis知识点1
- 失调电压
- 继承特性笔记
- iOS Crash文件分析
- 71. Simplify Path
- openant