RAC簡(jiǎn)介

前言

RAC是iOS開發(fā)中經(jīng)常使用到響應(yīng)式框架,在OC中可以通過(guò)pod導(dǎo)入

pod 'ReactiveObjC' 

RAC信號(hào)創(chuàng)建與發(fā)送

RAC中一個(gè)常見的流程:
1.創(chuàng)建一個(gè)信號(hào)
2.訂閱信號(hào)
3.發(fā)送信號(hào)
RACSignal的作用就是創(chuàng)建一個(gè)信號(hào),默認(rèn)冷信號(hào)(未被訂閱)

    //RACSignal創(chuàng)建一個(gè)信號(hào)(默認(rèn)冷信號(hào))
    RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber>  _Nonnull subscriber) {
        return nil;
    }];

通過(guò)subscribeNext進(jìn)行訂閱

[signal subscribeNext:^(id  _Nullable x) {
        //x為收到信號(hào)內(nèi)容
        NSLog(@"%@", x);
 }];

在創(chuàng)建RACSignal時(shí),可發(fā)現(xiàn)block:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) ,其中subscriber負(fù)責(zé)發(fā)送消息,RACDisposable負(fù)責(zé)取消訂閱
RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
[subscriber sendNext:@"信號(hào)"];

    //subscriber被釋放時(shí)才會(huì)進(jìn)入
    return [RACDisposable disposableWithBlock:^{
        //取消訂閱回調(diào)
        NSLog(@"訂閱取消");
    }];
}];

注意:[RACDisposable disposableWithBlock:]只有在subscriber被釋放時(shí),才會(huì)調(diào)用,如果我們創(chuàng)建一個(gè)強(qiáng)引用屬性持有subscriber,這句代碼不會(huì)執(zhí)行。
在訂閱信號(hào)時(shí)subscribeNext 返回一個(gè)RACDisposable,可保存該對(duì)象,通過(guò)dispose手動(dòng)釋放

RACDisposable *disposable = [signal subscribeNext:^(id  _Nullable x) {
        //x為信號(hào)內(nèi)容
        NSLog(@"%@", x);
    }];
[disposable dispose];
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容