要點
1. 什麼時候使用類別,有什麼限制,如何選擇用類別還是繼承
2. 了解什麼是類擴充套件
什麼是類別 類別
(category)
允許對現有累進行擴充套件,在現有的類中新增使用者自己的方法。有些類似於
c#的擴充套件方法。
什麼時候使用類別
有時我們需要在乙個已經定義好的類中增加一些方法,而不想去改寫該類。通常的原因是已經有其他**呼叫了該類建立物件並使用該類的方法,不能用繼承又不方便修改類本身時,這時可以使用類別對該類進行輕量化的擴充,新增新的方法。
乙個類過於龐大,可以對類進行一些拆分方便管理。
類別的使用限制
類別只能擴充方法,而不能擴充成員變數。
類別中的方法與現有方法重名時將完全覆蓋原本類方法。也就是說沒有途徑訪問原本類方法,不能用類似
super
的樣子呼叫。這極大的限制了類別的作用。
類擴充套件
即class extension
,一種特殊的匿名的類別,看起來像下面這樣。
@inte***ce
classa()
-(void)method;
@end
class extension
可以定義變數和
property
,可以有多個,預設在生成的
.m檔案最上方就有乙個,通常用於實現類似於私有變數、方法的功能。
iOS類別和類擴充套件
在ios中,有一種機制可以使使用者在沒有遠嗎的情況下擴充套件類的功能,但不是通過繼承,這就是類別。ios中沒有類似c 中可以定義私有方法和私有變數的關鍵字,要定義私有方法和私有變數,可以用類擴充套件來實現。類別 類別在不需要繼承的情況下可以擴充套件類的功能。但類別不能新增類的屬性和私有變數。類別可以...
ios 類別和類擴充套件
二兩種字典轉模型的 本文分為兩部分 一 教你怎樣一部獲取成員屬性 通過nsobject autologproperty分類 二 對比kvc和runtime兩種字典轉模型的方法並抽取乙個分類 void createpropertycodewithdict nsdictionary dict else ...
類 類別 擴充套件
class sayhelloworld.h import inte ce sayhelloworld nsobject end sayhelloworld.m import sayhelloworld.h 這裡一般用extension為原類新增變數和協議等等。implementationsayhel...