1. 程式人生 > >iOS中 分類(category)與擴充套件(Extension)的區別?

iOS中 分類(category)與擴充套件(Extension)的區別?

1.分類(category)的作用

(1).作用:可以在不修改原來類的基礎上,為一個類擴充套件方法。
(2).最主要的用法:給系統自帶的類擴充套件方法。

2.分類中能寫點啥?

(1).分類中只能新增“方法”,不能增加成員變數。
(2).分類中可以訪問原來類中的成員變數,但是隻能訪問@protect和@public形式的變數。如果想要訪問本類中的私有變數,分類和子類一樣,只能通過方法來訪問。
(3).如果一定要在分類中新增成員變數,可以通過getter,setter手段進行新增。

 

1.在專案中新增類,選擇Objective-C File,填寫自定義類名。

1.NSString+DLog.h檔案:

 

2.NSString+DLog.m檔案:

 

 

 

5.分類(category)和類擴充套件(extension)的關係

1.類擴充套件(extension)是category的一個特例,有時候也被稱為匿名分類或者私有類。他的作用是為一個類新增一些私有的成員變數和方法。
2.類擴充套件能寫點啥?和分類不同,類擴充套件即可以宣告成員變數又可以宣告方法。
3.類擴充套件聽上去很複雜,但其實我們很早就認識他了。你記得繼承自UIViewController的ViewController和繼承自NSObject的類有什麼不同麼?
4.類擴充套件可以定義在.m檔案中,這種擴充套件方式中定義的變數都是私有的,也可以定義在.h檔案中,這樣定義的程式碼就是共有的,類擴充套件在.m檔案中宣告私有方法是非常好的方式。
5.類擴充套件中新增的新方法,一定要實現。categorygory中沒有這種限制。

&n