iOS 开发之使用链式编程思想实现简单的计算器
链式编程思想是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好。例如 a(1).b(2).c(3)。
链式编程思想最为关键的是,方法的返回值是block,block必须返回对象本身(返回block时,block所在的方法调用者对象)block的参数是需要操作的值。;
在iOS开发中,使用链式编程思想最好的代表是 Masonry 自动约束布局:
例如:
[itemButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(contentView.mas_left).offset( + (itemWidth+)*i);
make.top.equalTo(contentView.mas_top).offset();
make.width.height.equalTo(@(itemWidth));
}];
执行流程为:
/**
mas_makeConstraints执行流程:
1.创建约束制造者MASConstraintMaker,并且绑定控件,生成一个保存所有约束的数组
2.执行mas_makeConstraints传入的Block
3.让约束制造者安装约束!
* 1.清空之前的所有约束
* 2.遍历约束数组,一个一个安装
*/
可以看出,使用链式编程,代码可读性较好。
仿照 Masnory 使用链式编程思想写个运算器:
#import <Foundation/Foundation.h> @interface CalculateManager : NSObject @property (nonatomic, assign) int result; - (CalculateManager *(^)(int value))add; - (CalculateManager *(^)(int value))minus; - (CalculateManager *(^)(int value))multiply; - (CalculateManager *(^)(int value))devite; @end
#import "CalculateManager.h"
@implementation CalculateManager
- (CalculateManager *(^)(int))add {
return ^(int value) {
_result += value;
return self;
};
}
- (CalculateManager *(^)(int))minus {
return ^(int value) {
_result -= value;
return self;
};
}
- (CalculateManager *(^)(int))multiply {
return ^(int value) {
_result *= value;
return self;
};
}
- (CalculateManager *(^)(int))devite {
return ^(int value) {
_result /= value;
return self;
};
}
@end
#import "NSObject+Calculate.h" #import "CalculateManager.h" @implementation NSObject (Calculate) + (int)ztb_calculateValue:(void(^)(CalculateManager *make))block
{
CalculateManager *manager = [[CalculateManager alloc] init];
block(manager);
return manager.result;
} @end
在使用时:
int result = [NSString ztb_calculateValue:^(CalculateManager *make) {
make.add().multiply().devite().minus().add();
}];
可以在 Block 中进行运算了
iOS 开发之使用链式编程思想实现简单的计算器的更多相关文章
- iOS利用block实现链式编程方法(Objective-C链式编程)
objc利用block实现链式编程方法 因为不好读.block和其他语言的匿名函数一样,很多程序员刚开始很难主动去用他. 本文描述block作为属性的实际使用,看懂block,并讲解如何利用block ...
- Objective-C 链式编程思想
链式编程思想 链式编程是什么 链式编程就是将调用多个方法用点语法连接起来,让代码更加简洁和可读性更高刚开始接触链式编程是Masonry,用起来真的非常爽 1 make.left.right.top.e ...
- 模仿Masonry链式编程思想
使用masonry 也将近一年多了,它的链式编程方式一直是很吸引我的. 之前一直没空好好思考它是如何实现,直到现在正好自己有空,因此写下链式编程的基本思路. 链式基本的编程形式如 a.property ...
- iOS开发--Swift RAC响应式编程初探
时间不是很充足, 先少说点, RAC的好处是响应式编程, 不需要自己去设置代理委托, target, 而是主要以信息流(signal), block为主, 看到这里激动吧, 它可以帮你监听你的事件, ...
- iOS开发--Swift RAC响应式编程
时间不是很充足, 先少说点, RAC的好处是响应式编程, 不需要自己去设置代理委托, target, 而是主要以信息流(signal), block为主, 看到这里激动吧, 它可以帮你监听你的事件, ...
- iOS开发雕虫小技之傻瓜式定位神器-超简单方式解决iOS后台定时定位
1.概述 由于公司一款产品的需求,最近一直在研究iOS设备的后台定位.主要的难点就是,当系统进入后台之后,程序会被挂起,届时定时器.以及代码都不会Run~ 所以一旦用户将我的App先换到了后台,我的定 ...
- ios的链式编程笔记
1.Masonry的语法为啥能连续的使用点语法? >> 底层使用的是:用block当函数的返回参数 > 链式编程思想 2. 使用block当函数的返回参数 // 之前开发中比较习惯 ...
- ASP.NET MVC学前篇之扩展方法、链式编程
ASP.NET MVC学前篇之扩展方法.链式编程 前言 目的没有别的,就是介绍几点在ASP.NETMVC 用到C#语言特性,还有一些其他琐碎的知识点,强行的划分一个范围的话,只能说都跟MVC有关,有的 ...
- iOS开发技巧系列---使用链式编程和Block来实现UIAlertView
UIAlertView是iOS开发过程中最常用的控件之一,是提醒用户做出选择最主要的工具.在iOS8及后来的系统中,苹果更推荐使用UIAlertController来代替UIAlertView.所以本 ...
随机推荐
- 安装php-zbarcode的步骤方法
1 安装ImageMagick依赖 yum install ImageMagick ImageMagick-devel 2 安装zbar拓展 wget -c http://jaist.dl.sourc ...
- java基础(四)之this的使用
作用: 1.使用this调用成员变量和成员函数2.使用this调用构造函数 Person.java: class Person{ String name; //成员变量 void talk(Strin ...
- WPF学习笔记二之依赖属性
1.快捷生成依赖属性:propdp然后按两次tab键 2.应用场景:自定义控件 什么是依赖属性:依赖属性自己没有值,通过依赖别人(如Binding)来获得值. 依赖属性为什么会出现:控件常用字段有限, ...
- JQ DOM元素 创建 添加 删除
创建元素 // 创建元素节点 $('<p></p>'); // 创建属性节点 $('<p class="wow"></p>'); / ...
- Java第一个程序HelloWorld
1.创建一个java源文件:HelloWorld.java public class HelloWorld{ public static void main(String[] args){ Syste ...
- python之路之html
def index(request): print request.POST print request.GET print request.FILES for item in request.FIL ...
- jQuery对象和语法
jQuery类型 引入jquery.js时,其实是向全局作用域中,添加了一个新的类型--jQuery. 构造函数:负责创建jQuery类型的对象. 原型对象:保存jQuery对象可用的所有简化版API ...
- Redis05——Redis五大数据类型 String
String String是Redis最基本的数据类型(较常用),一个key对应一个value string类型是二进制安全的,Redis的string可以包含任何数据 一个Redis中字符串valu ...
- kali 安装与配置
打开虚拟机 新建一个虚拟机 导入虚拟文件 然后进行下面的步骤 开启虚拟机 语言:中文简体 地区: 中国 语言: 汉语 自动安装 配置网络 配置域名 填写密码(两次一致) 自动校对时钟 使用整个磁盘 选 ...
- 08day 操作命令以及目录结构
yum /var/log目录(日志文件)两个重要目录:message--记录系统或服务程序运行状态信息 secure--记录用户登录信息 tail -f 查看日志方法 head 查问文件头部