1)分類/類别(category):
允許以子產品的方式向現有類定義添加新的方法(預設不能添加執行個體變量)。用以擴充自己或他人以前實作的類,使它适合自己的需要。
分類的名稱括在類名之後的一對圓括号 "( )" 中。
分類檔案名使用符号“+”來分隔類和分類的名字(Xcode 會自動生成)。
分類用它可以将類的定義子產品化到相關方法的組或分類中。它還提供了擴充現有類定義的簡便方式,并且不必通路類的源代碼,也無需建立子類。
分類可以覆寫該類中的另一個方法,但是通常認為這種做法是拙劣的設計習慣。一個類可以擁有多個分類。使用分類添加新方法來擴充類不僅會影響這個類,同時也會影響它的所有子類。分類為現有類添加新方法可能對你有用,但它們可能和該類的原始設計或意圖不一緻。對象/分類命名對必須是唯一的。
2)分類中添加屬性(執行個體變量):
iOS 開發中,分類預設不允許添加屬性。
但是如果在自己開發的架構中,希望在分類中動态添加屬性,可以通過 OC 運作時的關聯對象功能添加。在分類中,定義一個屬性時,需要自己實作 getter & setter 方法,而且沒有 <code>_成員變量</code>。
運作時非常重要的一個應用:給分類動态添加屬性,結果能夠讓架構包裝的更好,讓使用者做出最小的修改。