公司新上项目中的登录、注册、发送验证码、修改密码等部分由我来实现。由于之前看了些美团和Ray Wenderlich上的RAC相关入门文章,自己想找个机会玩一玩,因此“自作主张”在podfile中加上了一行
目前这些部分已经开发完成并且已经上线,运行还算稳定,因此记录一下自己的使用经验,以免将来忘记,毕竟还有很多开发者没有足够接受这种函数式编程框架。
RAC基础就是信号的传递,需要拿信号的实体进行注册即可接收到信号。因此信号量的变化会实时反映到实体中,类似观察者模式。但RAC优越性是代码的集中,不像观察者那么分散。
RAC基础不过多说明,主要是做一些具体场景的记录。
对于登录注册等模块来说,首先生成文本输入框的信号量,其中包括用户名、密码、验证码等。
这里对于UI的更新可以如下使用RAC宏定义的方式根据输入内容改变文本输入框的样式
然后合理地安排将多个信号量合并为一个总信号量,用于提交、登录等按钮的判断。
对于提交按钮,我们使用上述合并后的信号量来控制其是否可用。
提交请求也需要生成是否请求成功的信号量,同时附带成功或失败的回调实体。
现在有了请求回调成功或失败的信号量了,则需要注册提交按钮为subscriber来接收这个信号量。这里RAC我实践过的注册接收方式有两种:第一种是使用rac_signalForControlEvents.
第二种是使用rac_command.
两种方式都可以,而第二种rac_command的方式更适用于用户在弹出键盘中输入完全部登录或注册信息后无需使用手指点击UI上的按钮,而直接点击回车即可自动提交。这需要在文本输入框的textFieldShouldReturn:代理函数中实现excute:方法:
上述代码是登录模块的核心代码,注册、验证码、修改密码等都是类似的实现方式。
简书文章之前默认是富文本,导致无法使用markdown。现在把设置修改了也改不了之前富文本创建的文章了,所以我把所有代码截图显示,希望能更方便阅读吧。










网友评论