Tag: 反应式

征服ReactiveSwift:SignalProducer(第4部分)

欢迎来到我的征服ReactiveSwift系列文章的第4部分。 在上一篇文章中,我们学习了如何创建和观察信号。 在本文中,我们将介绍SignalProducer的概念,它是Source类别下的重要原语。 定义 顾名思义, SignalProducer是产生Signal的东西。 基本上, SignalProducer封装了延迟且可重复的工作,这些工作在启动时会生成Signal 。 好吧,它有什么用? 请记住,在上一篇文章中,我们研究了以下问题陈述。 每隔五秒钟打印一次已过时间的消息。 我们创建了一个信号,该信号在接下来的50秒内每5秒发出一个整数。 然后,我们观察这些整数并打印经过的时间。 让我们假设,现在我们希望这从按钮轻按开始。 但是,作为观察者,我们只能观察信号,而不能使其开始或停止。 对于这种情况, SignalProducer非常适合。 因此,让我们开始吧! 我们将把整数发射代码封装在SignalProducer中。 //创建SignalProducer 让signalProducer:SignalProducer = SignalProducer {(观察者,生命周期)在 对于i in 0 .. <10 { DispatchQueue.main.asyncAfter(截止日期:.now()+ 5.0 * Double(i)){ viewer.send(值:i) 如果i == 9 {//标记第9次迭代完成 reader.sendCompleted() } } } } 在这里, SignalProducer用一个闭包初始化,该闭包在调用SignalProducer的 start方法时执行。 此闭包接受类型为Signal.Observer的观察者以及类型为Lifetime的生存期。 观察者用于发送值。 如果停止观察,则一生将为我们提供取消正在进行的工作的机会。 现在我们准备好了一个SignalProducer 。 让我们开始观察它。 //创建观察者 […]

React Native-iOS的本机模块

플랫폼접근접근API접근이필요하고,React Native에는그에이없다。 包括Objective-C,Swfit和C ++的스또는로시다,이없지프로세싱,이데이스고성능,스멀티레드스다。 Native리가React Native가실제티브이티브다다。 이세。능세세세세세세만만만만만만만만。 React Native가필요한이티브기능을지원하지면다면,직접다한다。 이여주는티브이방법을。。 使用Objective_C的Swift,请使用Foundation UIKit。 在Xcode中下载Xcode。 在本机模块设置中查看。 的iOS日历API的照片。 在iOS日历上进行下载。 在RCTBridgeModule中开发了Objective-C应用程序。 서기서RCT궁금하다면,ReactCT의다。 RCTBridgeModule,在RCT_EXPORT_MODULE()中下载。 것은스자바이크립트가지이접근지정자세한다갖는(갖는)。 이름을지정하지않는다면,Objective-C름은스이름과다。 Objective-C的RCT的RCT升级,RCT的RCT的제것的下载。 响应本机통해로자바스통해CalendarManager노출하다이다。 RCT_EXPORT_METHOD的照片。 이제,자바스크립트로파일이와메서드를다。 注意:자바스크립트이메서드 자바스크립트로내보낸이콜론까콜론까지네이티브이메서드이다。 는React Native자바크립트크립트크립트름을하CT RCT_REMAP_METHOD()매크로를정의한다。 이것은네이네가콜론까지콜론까지자바스크립트이유용하유용하다。 CalenderMaanger的[CalendarManager新功能]对象-Objective-C로인스턴스화다。 无效的桥梁。 React Native桥接,回调,回调回调 (다음을)。 RCT_EXPORT_METHOD下载JSON和JSON지다。 字符串(NSString) 数字(NSInteger,浮点数,双精度,CGFloat,NSNumber) 布尔值(BOOL,NSNumber) 数组数组(NSArray) 字符串이목록의값값对象(NSDictionary) 功能(RCTResponseSenderBlock) 在RCTConvert中添加了RCTConvert。 RCTConver和JSON,以及本机Objective-C和Java。 CalendarManager,本地语言的한다。 를자바자바크립트크립트크립트크립트없어서를를를를를로로로로로。 本地음과다음과이작성할다。 。다음과이작성할다。 하지만기변환사능을,능을정용하면스。스있다。 。음음하나를용하여크립트에서크립트에서크립트에서호출한호출한호출한호출한。 또는 本地NSDate로변환된다。 数组같사용할경우경우이경우“ RedBox”메시지를다。 […]

学习RxSwift(第1部分)

如今Rx蓬勃发展,我认为如果每个开发人员都使用RxSwift会更好。 Rx =反应式编程,这是一个与数据流和变化的传播有关的声明式编程范例,例如,在命令式编程中,将a = b+c设置a = b+c将a的结果赋给a b+c ,然后是b的值 和c 可以更改而不会影响a的值,但是在反应式编程中,a的值 只要b的值自动更新 或c 更改,而程序不必重新执行语句a:=b+c 确定a的当前赋值。 维基百科 ReactiveX是来自以下方面的最佳创意的组合 观察者模式,迭代器模式和功能编程。 ReactiveX不仅仅是一个API,它是编程的想法和突破。 它启发了其他几种API,框架,甚至是编程语言。 在ReactiveX中,观察者订阅了一个Observable。 然后,该观察者对可观察对象发出的任何项目或项目序列做出反应。 这种模式有助于并发操作,因为它在等待Observable发出对象时不需要阻塞,而是以观察者的形式创建了一个哨兵,随时准备在Observable以后的任何时间做出适当的反应。 在ReactiveX中,许多指令可能会并行执行,并且随后会捕获其结果,您以“可观察”的形式定义了一种用于检索和转换数据的机制,然后为它订阅了一个观察者,在此之前,当观察员站岗时,定义好的机制便开始行动起来,以随时捕获并响应其排放。 这种方法的优点是,当您有一堆彼此不依赖的任务时,可以同时启动所有任务,而不必等每个任务都完成才开始下一个任务-这样,您的整个完成任务捆绑包所需的时间与捆绑包中最长的任务一样长。 热点观察 在创建项目后立即发出项目,因此以后订阅该Observable的任何观察者都可以开始观察中间位置的序列。 冷观测 等到观察者订阅它之后才开始发射项目,因此可以保证这样的观察者从一开始就可以看到整个序列。 RxSwift功能强大且功能强大,可节省大量开发人员的生命和精力,可用于: 1-绑定 Observable.combineLatest(firstName.rx.text,lastName.rx.text){$ 0 +“” + $ 1} .map {“问候语,\($ 0)”} .bind(发送至:greetingLabel.rx.text) 2-代表 而不是进行乏味且无表情的操作: 公共功能scrollViewDidScroll(scrollView:UIScrollView){[弱自我] self?.leftPositionConstraint.constant = scrollView.contentOffset.x } …写 self.resultsTableView .rx.contentOffset .map {$ 0.x} .bind(发送至:self.leftPositionConstraint.rx.constant) […]