類別支持在沒有源代碼的情況下,基于某些特定的場合,為一個類增加功能
可以添加:
類方法
實例方法
重寫基類方法
不能添加:
屬性
實例變量
已存在的同名方法
命名規(guī)范
文件名:類名+擴(kuò)展方法,如:NSString+Drawing.h/.m
使用場景:
適合在沒有源代碼的情況下,向已經(jīng)封裝的類中添加方法;
為一個類在某些特殊場景下增加功能丧荐;
對于復(fù)雜文件的分割實現(xiàn)
擴(kuò)展支持在編譯時洼哎,有類的源代碼的前提下骤公,向類添加功能,可以將擴(kuò)展看做匿名的類別
接口定義在.m文件中@implementation前聲明,實現(xiàn)代碼仍然在@implementation內(nèi)實現(xiàn)
擴(kuò)展支持添加以下成員:
添加屬性
添加實例成員
添加類方法
添加實例方法
改寫屬性的讀寫屬性
擴(kuò)展實現(xiàn)的成員都只能在.m實現(xiàn)文件內(nèi)部訪問,在類外不可以直接訪問
擴(kuò)展的主要用途在于信息隱藏,隱藏一些外部無需訪問,而內(nèi)部實現(xiàn)又需要使用的屬性和方法:
類的主接口主要用于“對類外公開”的接口;
類的擴(kuò)展接口用于“對類內(nèi)可見”的接口
類別對外,擴(kuò)展對內(nèi)