RAC的常見應用場景

2021-08-13 21:18:00 字數 2006 閱讀 5964

這裡寫rac常見的應用場景

1. rac集合

2. 代替kvo

1. 監聽事件

3. 代替通知

4. 監聽文字框

5.**

ractuple是rac定義的集合,跟陣列類似,

ractuple *tuple = [ractuple

tuplewithobjectsfromarray:@[@"aaaa",@"bb",@123,@23434]];

nsstring *str = tuple[0];

nslog(@"%@",str);

racsequence 用於代替nsarray,nsdictionary 可以使用快速遍歷

資料解析 最常見的應用場景:字典轉模型

//陣列

nsarray *arr = @[@"abc",@"bbb",@123];

//rac集合 將陣列中的元素作為傳送訊號的內容

[arr.rac_sequence

.signal subscribenext:^(id _nullable x) ];

//字典

nsdictionary *dict = @;

//字典轉為集合

[dict.rac_sequence

.signal subscribenext:^(ractuple * x)];

[_redview rac_observekeypath:@"frame" options:nskeyvalueobservingoptionold observer:nil block:^(id value, nsdictionary *change, bool causedbydealloc, bool affectedonlylastcomponent) ];
[[_btn rac_signalforcontrolevents:(uicontroleventtouchupinside)]subscribenext:^(__kindof uicontrol * _nullable x) ];

[[[nsnotificationcenter defaultcenter]rac_addobserverforname:uikeyboardwillshownotification object:nil]subscribenext:^(nsnotification * _nullable x) ];

[_textfield.rac_textsignal subscribenext:^(nsstring * _nullable x) ];
//這裡訂閱收到的是乙個x,當乙個頁面存在多個tableview時,我們可以對x進行判斷看是哪個tableview

[[self rac_signalforselector:@selector(tableview:didselectrowatindexpath:) fromprotocol:@protocol(uitableviewdelegate) ] subscribenext:^(ractuple * x) ];

//這樣子不帶協議是無法代替**的,雖然能達到效果,這個方法表示某個selector被呼叫時執行一段**.帶有協議引數的表示該selector實現了某個協議,所以可以用它來實現delegate。

// [[self rac_signalforselector:@selector(tableview:didselectrowatindexpath:)] subscribenext:^(ractuple* x) ];

//這裡是個坑,必須將**最後設定,否則訊號是無法訂閱到的

//在設定**的時候,系統會快取這個**物件實現了哪些**方法

//如果將**放在訂閱訊號前設定,那麼當控制器成為**時是無法快取這個**物件實現了哪些**方法的

tableview.delegate = self;

SDN常見應用場景

1 overlay 由於虛擬機器遷移的網路屬性要求,當從乙個物理機上遷移到另乙個物理機上,要求虛擬機器不間斷業務,需要其ip位址 mac位址等引數保持不變,如此則要求業務網路是乙個二層網路。傳統的二層無法穿越中間的三層網路,此外傳統的vlan只能支援4k個vlan,虛擬機器規模受網路規格限制,網路隔...

redis常見應用場景

redis應用場景總結redis平時我們用到的地方蠻多的,下面就了解的應用場景做個總結 1 熱點資料的快取由於redis訪問速度塊 支援的資料型別比較豐富,所以redis很適合用來儲存熱點資料,另外結合expire,我們可以設定過期時間然後再進行快取更新操作,這個功能最為常見,我們幾乎所有的專案都有...

xargs應用場景和常見用法

基本是配合有輸出結果多的命令,例如find ls 查詢所有的jpg 檔案並壓縮find name png type f print xargs tar cvzf images.tar.gz刪除查詢到的日誌find name log print0 xargs 0 rm f查詢當前目錄下所有使用者具有讀...