您的位置:网站首页 > 行业资讯 > 行业动态 > 正文

皇冠现金网_皇冠现金网官网【唯一官网】

  2016-01-21 13:20  中国润滑油信息网
皇冠现金网_皇冠现金网官网【唯一官网】 如下所示:

reactivecocoa 妄图处置惩罚啥疑问

rac 的racsignal 类也提供了createsignal法子来让用户创立自定义的旌旗灯号,如下代码创立了一个下载指定网站内容的旌旗灯号

static void *observationcontext = &observationcontext;- (void)viewdidload {[super viewdidload];[loginmanager.sharedmanager addobserver:selfforkeypath:@"loggingin"options:nskeyvalueobservingoptioninitialcontext:&observationcontext];[self.usernametextfield addtarget:self action:@selector(updateloginbutton)forcontrolevents:uicontroleventeditingchanged];[self.passwordtextfield addtarget:self action:@selector(updateloginbutton)forcontrolevents:uicontroleventeditingchanged];}- (void)updateloginbutton {bool textfieldsnonempty = self.usernametextfield.text.length > 0 && self.passwordtextfield.text.length > 0;bool readytologin = !loginmanager.sharedmanager.isloggingin && !self.loggedin;self.loginbutton.enabled = textfieldsnonempty && readytologin;}- (void)observevalueforkeypath:(nsstring *)keypath ofobject:(id)objectchange:(nsdictionary *)change context:(void *)context {if (context == observationcontext) {[self updateloginbutton];} else {[super observevalueforkeypath:keypath ofobject:objectchange:change context:context];}}

咱们在开拓 ios 运用时,一个界面元素的状况很可能受多个其它界面元素或后台状况的影响

作为一个 ios 开拓范畴的新开源布局,reactivecocoa 带来了函数式编程和呼应式编程的思维,值得我们注重而且进修

同等音讯通报机制

开拓者也能够用 cocoapods 来设置方针工程对 reactivecocoa 的寄托,只需求改动 podfile 文件,添加如下内容即可:

击一样平常环境下,咱们需求监听这两个输入框的状况篡改以及登录的收集请求状况,然后修正另一个控件的enabled状况

提供同等的音讯通报机制

viewmodel 层的篡改,这使得 controller 变得愈加大略,由于 view 不再与 model 绑定,也添加了 view

pod 'reactivecocoa'reactivecocoa 的特色

的可重用性

除了组合(combine)以外,rac 的旌旗灯号还支撑链式(chaining)和过滤(filter),以便利将旌旗灯号进行进一步处置惩罚

-(racsignal *)urlresults {return [racsignal createsignal:^racdisposable *(id subscribetb168通宝娱乐城r) {nserror *error;nsstring *result = [nsstring stringwithcontentsofurl:[nsurl urlwithstring:@"http://www.devtang.com"]encoding:nsutf8stringencodingerror:&error];nslog(@"download");if (!result) {[subscriber senderror:error];} else {[subscriber sendnext:result];[subscriber sendcompleted];}return [racdisposable disposablewithblock:^{nslog(@"clean up");}];}];}怎么运用 reactivecocoa

rac(self.loginbutton, enabled) = [racsignalcombinelatest:@[self.usernametextfield.rac_textsignal,self.passwordtextfield.rac_textsignal,racobserve(loginmanager.sharedmanager, loggingin),racobserve(self, loggedin)] reduce:^(nsstring *username, nsstring *password, nsnumber *loggingin, nsnumber *loggedin) {return @(username.length > 0 && password.length > 0 && !loggingin.boolvalue && !loggedin.boolvalue);}];

controller 经常与对应的 view 和 model 的耦合度十分高,这一路也形成对其做单元测验十分不大略,对 ios

颠末一段时候的研讨,我以为 reactivecocoa 妄图处置惩罚以下 3 个疑问:

031

布局颠末引进 viewmodel 层,然后用 rac 将 viewmodel 与 view 相关,view 层的篡改能够直接呼应

rac 在运用中很多运用了 block,由于 objective-c 言语的内存解决是根据 引证计数 的,为了防止轮回引证疑问,在 block 中要是要引证 self,需求运用@weakify(self)和@strongify(self)来防止强引证其余,在运用时该当把稳 block 的嵌套层数,不恰当的乱用多层嵌套 block 可能给法度榜样的可保护性带来磨难

传统的写法如下(该示例代码修正自 reactivecocoa 官网 ) :

啥是 reactivecocoa

rac 颠末引进旌旗灯号(signal)的观点,来替代传统 ios 开拓中关于控件状况篡改查看的署理(delegate)形式或

rac 的旌旗灯号机制很大略将某一个 model 变量的篡改与界面相关,以是十分大略运用 model-view-viewmodel

ios 开拓中有着各类音讯通报机制,包孕 kvo、notification、delegation、block 以及 target-action 法子各类音讯通报机制使得开拓者在做具体遴选时认为迷惑,例如在 objc.io 上就有 专门撰文(破船的翻译 ),先容各类音讯通报机制之间的差别性

例如,在用户帐户的登录界面,一样平常会有 2

能够看到,在引进 rac 今后,曾经散落在action-target或 kvo 的回调函数中的判别逻辑被同等到了一同,然后使得登录按钮的enabled状况被愈加了了地表达了出来

工程的单元测验大年夜多都只在一些器械类或与界面无关的逻辑类中进行

传统 ios 开拓历程中,状况以及状况之间寄托过多的疑问

target-action 形式由于 1919偷女厕rac 的旌旗灯号是能够组合(combine)的,以是能够轻松地构造出另一个新的旌旗灯号出来,然后将按钮的enabled状况与新的旌旗灯号绑定

reactivecocoa 能够在 ios 和 os x 的运用开拓中运用,关于 ios 开拓者,能够将 rac 源码 下载编译后,运用编译好的libreactivecocoa-ios.a文件

rac 的编程法子和传统的 mvc 法子差别无穷,以是需求较长的进修时候而且,业界内关于 rac 并没有广泛运用,这形成可供参考的项目和教程比较缺乏

reactivecocoa(其简称为 rac)是由 github 开源的一个运用于 ios 和 os x 开拓的新布局rac 具有函数式编程和呼应式编程的特点它重要罗致了 .net 的 reactive extensions 的筹划和完结

的布局,controller 很大略变得比较宏大年夜和紊乱由于 controller 承当了 model 和 view 之间的桥梁效果,以是

rac 将传统的 ui 控件工作进行了封装,使得以上各类音讯通报机制都能够用 rac 来完结示例代码如下:

皇冠现金网_皇冠现金网官网【唯一官网】

reactivecocoa - ios开拓的新布局

这篇文章为 infoq 中文站特供稿件,首发地址为:文章链接如需转发,请与 infoq 中文站团结

feb 11th, 2014

皇冠现金网_皇冠现金网官网【唯一官网】

妄图处置惩罚 mvc 布局的疑问

1

传统 mvc 架构的疑问:controller 比较紊乱,可测验性差

传统 ios 开拓历程中,状况以及状况之间寄托过多的疑问

关于传统的 model-view-controller

// kvo[racobserve(self, username) subscribenext:^(id x) {nslog(@" 成员变量 username 被修正成了:%@", x);}];// target-actionself.button.rac_command = [[raccommand alloc] initwithsignalblock:^racsignal *(id input) {nslog(@" 按钮被点击 ");return [racsignal empty];}];// notification[[[nsnotificationcenter defaultcenter]rac_addobserverforname:uikeyboarddidchangeframenotificationobject:nil]subscribenext:^(id x) {nslog(@" 键盘 frame 篡改 ");}];// delegate[[self rac_signalforselector:@selector(viewwillappear:)] subscribenext:^(id x) {debuglog(@"viewwillappear 法子被调用 %@", x);}];

其余,rac 项目自身也还在疾速演进当中,1.x 版别和 2.x 版别 api 篡改了很多,3.0 版别也正在疾速开拓中,对它的运用也需求思虑后期的晋级保护疑问

个输入框(分袂输入帐号和暗码)和一个登录按钮要是咱们要参加一个约束前提:当用户输入完帐号和暗码,而且登录的收集请求还未发布时,断定按钮才能够点

由于引进了 viewmodel 层,以是单元测验能够在 viewmodel 层进行,ios 工程的可测验性也大年夜大年夜增强了infoq 也曾撰文先容过 mvvm:《mvvm 启示录》

  本文系中国润滑油信息网(www.sinolub.com)原创作品,若需转载务必以超链接的形式注明出处,转载时严禁任何有悖原文的文字修改;本网有权对所有侵权行为进行责任追究。

分享到: QQ空间 新浪微博 人人网 开心网 腾讯微博 更多

相关新闻

友情提醒

本信息真实性未经中国润滑油信息网证实,仅供您参考。未经许可,请勿转载。已经本网授权使用的,应在授权范围内使用,并注明“来源:中国润滑油信息网”。

本网部分文章转载自其它媒体,转载目的在于传递更多行业信息,并不代表本网赞同其观点和对其真实性负责。在本网论坛上发表言论者,文责自负,本网有权在网站内转载或引用,论坛的言论不代表本网观点。本网所提供的信息,如需使用,请与原作者联系,版权归原作者所有。如果涉及版权需要同本网联系的,请在15日内进行。

官方微博

热点招商

奥吉星润滑油全国招商

奥吉星润滑油(天泰集团化工控股有限公司 股票代码:GTS)是由天泰控股的专业润滑油生产企业。 全国招商热线:400-0635-789

Gulf海湾石油面向全国招商

海湾石油(中国)有限公司是Gulf Oil International 在国内的唯一子公司。 现诚招经销商。 招商热线:0535-2161171

埃尼润滑油面向全国招商

埃尼是一家综合性能源企业,业务遍及83个国家,拥有84,000名员工,从事石油和天然气勘探、生产、运输、转化和营销活动,业务涉及化工、油田服务、建筑和工程领域。

关于我们|本网动态|广告服务|联系方式|免责声明|版权信息|法律顾问
CopyRight©2015-2016 Sinolub.Com All Rights Reserved 九鼎公司 版权所有
《中华人民共和国增值电信业务经营许可证》编号:粤B2-20050302
服务热线:0754-88650988 在线服务QQ:619128006 润滑油商机信息群:③:50693127 ④:65958932