IOS編程思想的概念

iOS幾大編程思想編程

面向對象思想:萬物皆對象,作一件事情的過程轉變爲對象處理事件的過程。框架

鏈式編程思想:將多個操做經過點(.)連接在一塊兒成爲一句代碼,使得代碼更好閱讀。例如p.add(1).add(2)。特別的地方在於每一個方法返回一個block,這個block的返回值又是這個對象自己,block的參數須要本身考慮實際狀況。這裏在多講一下,爲何add後面要加括號,還有參數。其實這個就是調用了這個block(block的調用就是括號,裏面添加參數).其表明最出名的第三方框架是Masonry。不懂的能夠去看看,這裏不貼代碼。ide

響應式編程思想:不須要考慮調用順序,只須要知道結果。產生一個事件,會影響不少東西,這些事件像流同樣傳播出去,而後做用,最後產生結果。借用面向對象的一句話,萬物皆是流。其表明是KVO。函數式編程

函數式編程思想:函數調用其餘函數做爲參數。其表明是ReactiveCocoa。函數

 

這裏寫幾個經常使用的ReactiveCocoa用法,語法主要爲了高內聚低耦合。像btn的點擊事件,textfiled的文字改變事件,或者通知,代理等等。ui

// 1.代替代理 // 需求:自定義redView,監聽紅色view中按鈕點擊 // 以前都是須要經過代理監聽,給紅色View添加一個代理屬性,點擊按鈕的時候,通知代理作事情 // rac_signalForSelector:把調用某個對象的方法的信息轉換成信號,就要調用這個方法,就會發送信號。 // 這裏表示只要redV調用btnClick:,就會發出信號,訂閱就行了。 [[redV rac_signalForSelector:@selector(btnClick:)] subscribeNext:^(id x) { NSLog(@"點擊紅色按鈕"); }]; // 2.KVO // 把監聽redV的center屬性改變轉換成信號,只要值改變就會發送信號 // observer:能夠傳入nil [[redV rac_valuesAndChangesForKeyPath:@"center" options:NSKeyValueObservingOptionNew observer:nil] subscribeNext:^(id x) { NSLog(@"%@",x); }]; // 3.監聽事件 // 把按鈕點擊事件轉換爲信號,點擊按鈕,就會發送信號 [[self.btn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) { NSLog(@"按鈕被點擊了"); }]; // 4.代替通知 // 把監聽到的通知轉換信號 [[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardWillShowNotification object:nil] subscribeNext:^(id x) { NSLog(@"鍵盤彈出"); }]; // 5.監聽文本框的文字改變 [_textField.rac_textSignal subscribeNext:^(id x) { NSLog(@"文字改變了%@",x); }]; // 6.處理多個請求,都返回結果的時候,統一作處理. RACSignal *request1 = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) { // 發送請求1 [subscriber sendNext:@"發送請求1"]; return nil; }]; RACSignal *request2 = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) { // 發送請求2 [subscriber sendNext:@"發送請求2"]; return nil; }]; // 使用注意:幾個信號,參數一的方法就幾個參數,每一個參數對應信號發出的數據。 [self rac_liftSelector:@selector(updateUIWithR1:r2:) withSignalsFromArray:@[request1,request2]]; }   // 更新UI   - (void)updateUIWithR1:(id)data r2:(id)data1   {    NSLog(@"更新UI%@ %@",data,data1);   }
相關文章
相關標籤/搜索