消息
消息是OC的主要特征。給對象發送消息 ? 等于是 ? java/c++中調用類對象的函數
在C++或Java里,類與類的行為方法之間的關系非常緊密,一個方法必定屬于一個類,且于編譯時就已經綁定在一起,所以你不可能調用一個類里沒有的方法。而在Objective-C中就比較簡單了,類和消息之間是松耦合的,方法調用只是向某個類發送一個消息,該類可以在運行時再確定怎么處理接受到的消息。
OC也允許發送隱藏的消息,就像java里使用反射來執行函數一樣;隱藏的消息可以在@interface中定義,也可以不定義。
表意接口
OC的接口定義
接口的定義語法比較怪,不夠簡潔,但是可讀性比java/c++要強
類別Category
為已有的類增加新的行為,使用場景是為已有的類增加新的方法,或者是團隊分工實現某個類
c++和java里確實沒有類似的機制,這正是OC的消息機制的松耦合帶來的擴展便利。
協議protocol
類似java的接口,主要用來描述某些具有相似行為、但是沒有繼承關系的類之間的關系;可以被繼承。
protocol實現了不屬于任何類的方法列表,這些方法可以被任何類在不同場景下實現。
這種模式稱為代理模式(delegation),在IOS是被大量使用在模塊解耦。