iOS 類別與類擴充套件

2021-06-27 15:05:59 字數 703 閱讀 9944

要點

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...