- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
大神都在看的RxSwift 的完全入坑手册
HYPERLINK /ReactiveX/RxSwift \t _blank RxSwift 是我在 Github 上关注已久的一个项目,今天花点时间过了一下它的示例代码,感觉很有意思。
我主要是通过项目里的 HYPERLINK /ReactiveX/RxSwift/tree/master/Rx.playground \t _blank Rx.playground 进行学习和了解的,这种方式确实便捷高效。只需要把文档用 /*: */ 注释即可,直接用 Markdown 编写,简单方便。不过 Xcode7 中这种方式现在还不是很稳定,会有大量的空行,而且有个最大的问题就是阅读到中间然后切到其他文件再切回来的时候,阅读的进度条是从头开始的,并不能记录上次阅读的位置。心累。
下面是我的简单笔记,只是把学习过程中的收获记录下来,大部分内容来自于项目内的 playground 。注意!是很大部分!而且操场里图文并茂,很容易理解。所以,各位如果感兴趣,建议 clone 官方项目,跑个操场玩玩。
参考文献中罗列了我在学习过程中查阅的相关资料,可以作为补充阅读。
SupportCode
在进入正题之前,先看下项目里的 SupportCode.swift ,主要为 playground 提供了两个便利函数。
一个是 example 函数,专门用来写示例代码的,统一输出 log 便于标记浏览,同时还能保持变量不污染全局:
public?func?example(description:?String,?action:?()?-?())?{?
????print(\n?\(description)?example?)?
????action()?
}?
另一个是 delay 函数,通过 dispatch_after 用来演示延时的:
public?func?delay(delay:Double,?closure:()-())?{?
????dispatch_after(?
????????dispatch_time(?
????????????DISPATCH_TIME_NOW,?
????????????Int64(delay?*?Double(NSEC_PER_SEC))?
????????),?
????????dispatch_get_main_queue(),?closure)?
}?
Introduction
主要介绍了 Rx 的基础: Observable 。 ObservableElement 是观察者模式中被观察的对象,相当于一个事件序列 (GeneratorType) ,会向订阅者发送新产生的事件信息。事件信息分为三种:
.Next(value) 表示新的事件数据。
.Completed 表示事件序列的完结。
.Error 同样表示完结,但是代表异常导致的完结。
(打个岔:协议命名,想起来上午汤哥在 HYPERLINK /1747002695/CBH3I4a1X?from=page_1005051747002695_profilewvr=6mod=weibotimetype=comment \t _blank 微博说的一段话:
另外,我觉得 protocol 名字用形容词会更加语义分明,比如 Swift : Flyable, Killable, Visible。全用名词的话显得比较生硬,比如 Swift : Head, Wings, Ass。
empty
empty 是一个空的序列,它只发送 .Completed 消息。
example(empty)?{?
????let?emptySequence:?ObservableInt?=?empty()?
?
????let?subscription?=?emptySequence?
????????.subscribe?{?event?in?
????????????print(event)?
????????}?
}?
?
?empty?example??
Completed?
never
never 是没有任何元素、也不会发送任何事件的空序列。
example(never)?{?
????let?neverSequence:?ObservableString?=?never()?
?
????let?subscription?=?neverSequence?
????????.subscribe?{?_?in?
????????????print(This?block?is?never?called.)?
????????}?
}?
?
?never?example??
just
just 是只包含一
您可能关注的文档
最近下载
- PLC应用技术(西门子S7-1200)全套教学课件.pptx VIP
- 宿州市市直机关遴选公务员考试真题2024.docx VIP
- GBT 35694-2017 光伏发电站安全规程.pdf
- DB41T 2312-2022 波形钢腹板预应力混凝土组合箱梁桥施工规范.pdf VIP
- 征信简版电子版PDF个人信用报告最新版2024年可编辑带水印模板.pdf VIP
- 胃肠道肿瘤的基因检测与个体化治疗.pptx VIP
- 部编版语文四年级上册第二单元综合素质测评B卷(含答案).pdf VIP
- 《道路深层病害探地雷达无损检测技术规范》DB41 T2525-2023.doc VIP
- 中国儿童幽门螺杆菌感染诊治专家共识(2022) .pdf
- 2021届广东省华师附属高级中学(广州总校)三下学期5月综合测试(三模)文科综合地理试卷无答案.pdf VIP
文档评论(0)