当前位置: 首页 > 科技观察

iOSReactiveCocoa最全最常用的API整理(可作为手动查询使用)

时间:2023-03-14 11:36:37 科技观察

本文适合有一定RAC基础的童鞋不定时查询,故本文不详解。一、常用分类1、RACSiganl信号分类。RACEmptySignal:空信号,用于实现RACSignal的+empty方法;RACReturnSignal:一元信号,用于实现RACSignal的+return:方法;RACDynamicSignal:一个动态信号,使用一个块-来实现订阅行为,我们使用RACSignal的+createSignal:方法创建此类的一个实例;RACErrorSignal:错误信号,用于实现RACSignal的+error:方法;RACChannelTerminal:通道终端,代表RACChannel的一个终端,用于实现双向绑定。2.RACSubscriber订阅者3.RACDisposable用于取消订阅或清理资源。当信号发送或发送错误时会自动触发。RACSerialDisposable:用作一次性容器,可以包含一个一次性对象,并允许通过原子操作来交换这个一次性对象;RACKVOTrampoline:代表一个KVO观察,可以用来停止观察;RACCompoundDisposable:可以包含多个disposable对象,支持手动添加和移除disposable对象RACScopedDisposable:dealloc时,调用自身的-dispose方法。4.RACSubject信号提供者可以充当信号,发送信号。RACGroupedSignal:分组信号,用于实现RACSignal的分组功能;RACBehaviorSubject:重播具有最高值的信号,当被订阅时,它会将它最后收到的值发送给订阅者;RACReplaySubject:重放信号,保存发送的,在订阅时重新发送给订阅者。5.RACTuple元组类,类似于NSArray,用于包装值。6.RACSequenceRAC中的集合类7.RAC中用于处理事件的RACCommand类。事件如何处理,事件中的数据如何传递,都可以封装到这个类中,他可以方便的监控事件的执行过程。8.RACMulticastConnection在信号被多次订阅时使用。为了保证信号被创建,信号创建中的block避免被多次调用,造成副作用。这个类可以用来处理。9、RACSchedulerRAC中的队列是用GCD封装的。RACImmediateScheduler:立即执行定时任务,是唯一支持同步执行的调度器;RACQueueScheduler:一个抽象的队列调度器,在一个GCD串行队列中异步调度所有任务;RACTargetQueueScheduler:继承自RACQueueScheduler,在一个AnyGCD队列中异步调度target的串行队列中的所有任务;RACSubscriptionScheduler:一个仅用于调度订阅的调度器。2.常用用法rac_signalForSelector:代替代理rac_valuesAndChangesForKeyPath:KVArac_signalForControlEvents:监听事件rac_addObserverForName代替通知rac_textSignal:监听文本框文本变化rac_liftSelector:withSignalsFromArray:Signals:当传入Signals(信号数组)时,每个信号至少被sentNext一次,将触发第一个选择器参数的方法。3、普通宏RAC(TARGET,[KEYPATH,[NIL_VALUE]]):用于绑定某个对象的某个属性RACObserve(self,name):监听某个对象的某个属性,并返回一个信号。@weakify(Obj)和@strongify(Obj)RACTuplePack:将数据打包成RACTuple(元组类)RACTupleUnpack:将RACTuple(元组类)解包成相应的数据RACChannelTo是双向绑定的终端4.常用操作方法flattenMapmap用于将源信号的内容映射到新的内容中。concat组合以特定顺序连接信号。当发送多个信号时,顺序接收的信号然后用于连接两个信号。当第一个信号完成时,then返回的信号将被连接。merge将多个信号合并为一个信号。当任一信号有新值时,它会调用zipWith将两个信号压缩为一个信号。只有当两个信号同时发出信号内容时,两个信号的内容才会合并。成一个元组,压缩流的下一个事件将被触发。combineLatest:合并多个信号,得到每个信号的最新值。在触发组合信号之前,每个组合信号必须至少有一次sendNext。reduce聚合:用于信令的内容是一个元组,将信令元组的值聚合成一个值过滤器:对信号进行过滤,用它来获取满足条件的信号。ignore:忽略某些值的信号。distinctUntilChanged:当上一个值和当前值之间有显着变化时,将发出信号,否则将被忽略。take:从头开始一共取N次信号takeLast:取***N次信号,前提条件,订阅者必须调用completion,因为只有完成了,你才会知道总共有多少个信号。takeUntil:(RACSignal*):获取信号Untilacertainsignalisexecutedskip:(NSUInteger):跳过几个信号,不接受。switchToLatest:用于signalOfSignals(信号信号),有时信号也会发送信号,在signalOfSignals中,获取signalOfSignals发送的最新信号。doNext:在执行Next之前,会先执行这个Block。doCompleted:在执行sendCompleted之前,会先执行这个Block。timeout:超时,允许信号在一定时间后自动报错。intervaltiming:每隔一定时间发送一个信号delay,延迟下一次发送。retry重试:只要失败,就会重新执行创建的信号中的block,直到成功。replay重播:当一个信号被多次订阅时,重复播放该内容。Throttle:当信号发送频繁时,可以使用Throttling,在一定时间内不发送信号内容,一段时间后发送信号的最新内容。五、UI-Category(常用汇总)1.rac_prepareForReuseSignal:复用时使用相关UI:MKAnnotationView、UICollectionReusableView、UITableViewCell、UITableViewHeaderFooterView2、rac_buttonClickedSignal:点击事件触发信号相关UI:UIActionSheet、UIAlertView3、rac_command:按钮类、刷新类相关Command替换相关UI:UIBarButtonItem、UIButton、UIRefreshControl4、rac_signalForControlEvents:控制事件触发器相关UI:UIControl5、rac_gestureSignalUIGestureRecognizer事件处理信号相关UI:UIGestureRecognizer6、rac_imageFiselectedSignal选择图像信号相关UI:UIImagePickerController7、相关UIText8UITextView:UIText8实现双向捆绑APIrac_channelForControlEvents:key:nilValue:相关UI:UIControl类rac_newDateChannelWithNilValue:相关UI:UIDatePickerrac_newSelectedSegmentIndexChannelWithNilValue:相关UI:UISegmentedControlrac_newValueChannelWithNilValue:相关UI:UISlider、UIStepperrac_newOnChannel相关UI:UISwitchrac_newTextChannel相关UI:UITextF字段六、Foundation-Category(常用总结)1.NSArrayrac_sequence信号收集2.NSDatarac_readContentsOfURL:options:scheduler:morethreadsettingsthanoc3.NSDictionaryrac_sequence不解释rac_keySequencekey集合rac_valueSequencevalue集合4、NSEnumeratorrac_sequence不解释5、NSFileHandlerac_readInBackground见名知意6、NSIndexSetrac_sequence不解释7、NSInvocationrac_setArgument:atIndex:设置参数rac_argumentAtIndex取某个参数rac_returnValue所关联方法的返回值8、NSNotificationCenterrac_addObserverForName:object:registrationnotification9,NSObjectrac_willDeallocSignalThesignallaunchedwhentheobjectisdestroyedrac_descriptiondebugusesrac_observeKeyPath:options:observer:block:listentoaneventrac_liftSelector:withSignals:allsignalsarenextinexecutionrac_signalForSelector:replaceacertainmethodrac_signalForSelector:(SEL)selectorfromProtocol:代替代理10、NSOrderedSetrac_sequence不解释11、NSSetrac_sequence不解释12、NSStringrac_keyPathComponents获取一个路径所有的部分rac_keyPathByDeletingLastKeyPathComponent删除路径***一部分rac_keyPathByDeletingFirstKeyPathComponent删除路径***部分rac_sequence不解释(character)rac_readContentsOfURL:usedEncoding:scheduler:比OCmulti-threadedcall13.NSURLConnectionrac_sendAsynchronousRequestinitiatesanasynchronousrequest14.NSUserDefaultsrac_channelTerminalForKeyisusedfortwo-waybinding,whichisa