iOS-鏈式程式設計思想
在iOS中,鏈式程式設計雖然用的不太多,但是,在特定的應用環境下,利用block實現鏈式程式設計的話,會大大的提高程式設計效率,並且程式碼直觀易讀。
iOS中鏈式程式設計中最經典的例子是Masonry為代表的程式碼形式,程式碼如下:
make.top.left.equalTo(@20);
我們知道OC的點語法實際上就是呼叫getter/setter方法,能實現這種鏈式最根本的原因是每次使用呼叫getter方法的時候的返回值實際上就是物件本身,這樣我們就能一直使用該物件一直使用點語法去呼叫。
Swift和OC的寫法是有區別:
Swift是直接返回物件本身,如:
func name(_ name: String) -> Person {}
OC 是返回一個 返回值為物件本身的 Block,如:
- (Person * (^)(NSString *))name;
造成這種差別的原因是:
1.Swift中的點語法是可以直接用來使用方法的。
2.OC中的點語法實際就是一個 getter/setter 方法,使用點語法,那麼相當於使用 getter/setter 方法獲取屬性,因此採用和Swift類似的方法的話,只能用 [ ] 來呼叫,那麼他的鏈式就表現為
[[[person name(@"Lily")] sex(@"men")] age(19)];
缺乏美感,也不簡潔。但是返回帶引數,返回值為物件本身的 Block 的話,則可以表現為是一個 getter 方法,get一個 Block,然後在Block中傳遞引數。
例子:
Swift 鏈式程式設計
Swift中的實現鏈式程式設計比Objective-C中簡單很多,通過func和extension即可實現。
呼叫方法:
Objective-C 鏈式程式設計
Objective-C中實現鏈式程式設計主要是通過Block來實現,利用方法的點式呼叫,自定義LWJView,定義如下:
實現如下:
呼叫方法:
執行的結果都是:
相關文章
- 淺析iOS-MAS&鏈式程式設計思想iOS程式設計
- Masonry鏈式程式設計思想的基本思路以及KVO底層的響應式程式設計程式設計
- iOS框架·Masonry原始碼深度解析及學習啟示:設計模式與鏈式程式設計思想iOS框架原始碼設計模式程式設計
- 程式設計思想 面向切面程式設計程式設計
- React程式設計思想React程式設計
- 函數語言程式設計-鏈式程式設計RAC函數程式設計
- Block實現鏈式程式設計BloC程式設計
- 淺談程式設計思想程式設計
- 極限程式設計思想程式設計
- 【程式設計素質】程式設計思想總結程式設計
- iOS鏈式程式設計及函數語言程式設計iOS程式設計函數
- 簡單學懂鏈式程式設計程式設計
- 程式設計思想之冪等性 | 程式設計之道程式設計
- 程式設計思想 物件導向程式設計物件
- JAVA語言程式設計思想Java程式設計
- 重讀JAVA程式設計思想Java程式設計
- 從李小龍的思想看程式設計師程式設計之道程式設計師
- 程式設計中的自頂向下設計思想程式設計
- go 模仿JAVA,面向介面/鏈式程式設計GoJava程式設計
- 【iOS】鏈式程式設計的真正含義iOS程式設計
- MR核心程式設計思想總結程式設計
- 《java程式設計思想》筆記1Java程式設計筆記
- java程式設計思想之註解Java程式設計
- JAVA 程式設計思想 第13章 字串Java程式設計字串
- 老程式設計師的思想變遷程式設計師
- Java 程式設計思想筆記:Learn 10Java程式設計筆記
- XML 程式設計思想:XML語義(轉)XML程式設計
- XML 程式設計思想: Harold 的高效 XML 設計原則(轉)XML程式設計
- 《Java程式設計思想》筆記08——持有物件Java程式設計筆記物件
- 《Java程式設計思想》讀書筆記一Java程式設計筆記
- java程式設計思想第一章Java程式設計
- 讀書筆記-Java程式設計思想-03筆記Java程式設計
- 依賴注入與面向介面程式設計思想依賴注入程式設計
- java程式設計思想之併發(死鎖)Java程式設計
- java入門之初讀___java程式設計思想Java程式設計
- 物件導向程式設計,我的思想[上]物件程式設計
- 物件導向程式設計,我的思想[下]物件程式設計
- Java程式設計思想之靜態技術Java程式設計