ReactiveCocoa個人記錄

2021-09-11 13:53:14 字數 2767 閱讀 8180

[[self.mybutton rac_signalforcontrolevents:uicontroleventtouchupinside] subscribenext:^(id x) ];

複製**

[[self.mytextfield rac_textsignal] subscribenext:^(id x) ];

//distinctuntilchanged 相同就不會再響應 takeuntil:(racsignal *):獲取訊號直到某個訊號執行完成

[[[[self.mytextfield rac_textsignal] distinctuntilchanged] takeuntil:self.rac_willdeallocsignal] subscribenext:^(id x) ];

複製**

[[self.usermodel rac_valuesandchangesforkeypath:@"username" 

options:nskeyvalueobservingoptionnew observer:nil] subscribenext:^(id x) ];

複製**

[[[[nsnotificationcenter defaultcenter] rac_addobserverforname:mptnotificationname object:nil] takeuntil:self.rac_willdeallocsignal] subscribenext:^(id x) ];

複製**

uialertview *alertview = [[uialertview alloc] initwithtitle:@"rac" message:@"rac test" delegate:self cancelbuttontitle:@"cancel" otherbuttontitles:@"other", nil];

[[self rac_signalforselector:@selector(alertview:clickedbuttonatindex:) fromprotocol:@protocol(uialertviewdelegate)] subscribenext:^(ractuple *tuple) ];

[alertview show];

// [[self rac_signalforselector:@selector(alertview:clickedbuttonatindex:)] subscribenext:^(id x) ];

//uialertview 還有更簡便的 上面只是為了演示rac_signalforselector 下面的x就是索引值

//如果使用此方法rac_signalforselector 不會再執行了。因為rac_buttonclickedsignal內部已經訂閱了rac_signalforselector方法

[[alertview rac_buttonclickedsignal] subscribenext:^(id x) ];

複製**

rac_liftselector

racsignal *request1 = [racsignal createsignal:^racdisposable *(idsubscriber) ];

racsignal *request2 = [racsignal createsignal:^racdisposable *(idsubscriber) ];

// 使用注意:幾個訊號,引數一的方法就幾個引數,每個引數對應訊號發出的資料。

[self rac_liftselector:@selector(updateuiwithr1:r2:) withsignalsfromarray:@[request1,request2]];

複製**

- (void)updateuiwithr1:(id)data r2:(id)data1

複製**

//then用法

//用於連線兩個訊號,當第乙個訊號完成,才會連線then返回的訊號

racsignal *thensignal=[asignal then:^racsignal *];

[thensignal subscribenext:^(id x) ];

//輸出 thensignal的值:7 thensignal的值:9 bsignal清理了 asignal清理了

//then例項

[[[[racsignal createsignal:^racdisposable *(idsubscriber) ] then:^racsignal *];

}] then:^racsignal *];

}] subscribecompleted:^];

//輸出:第一步 第二步 第三步

//說明:then的用法要跟上面這樣使用,它會在racsignal裡面就執行

複製**

[[[[racsignal createsignal:^racdisposable *(idsubscriber) ] donext:^(id x) ] docompleted:^] subscribenext:^(id x) ];

// 輸出

// 執行donext

// 執行subscribenext

// 執行sendnext

// 執行docompleted

複製**

ReactiveCocoa常見巨集

1 rac target,keypath,nil value 用於給某個物件的某個屬性繫結。只要文字框文字改變,就會修改label的文字 rac self.labelview,text textfield.rac textsignal reactivecocoa bindings rac self,...

ReactiveCocoa基本使用

reactiviecocoa的底層就不說明了。這裡就簡單介紹它的幾個基本使用場景。cocoapods匯入reactivecocoa5.0以上版本注意事項 1 如果你使用的是純swift工程,podfile檔案描述如下 use frameworks target 工程名稱 do pod reactiv...

ReactiveCocoa學習隨筆 一

self.usernametextfield.rac textsignal subscribenext id x 實現了動態監視textfield輸入的功能,一旦有輸入,就會執行 subscribenext bloc k,動態nslog textfield 所輸入的文字。self.usernamet...