您好,登錄后才能下訂單哦!
藍鷗iOS培訓講師推薦:大家都知道OC是在C++的基礎上面向對象的語言,那么在OC中為大家提供了可以讓我們擴展類定義的手段:也就是類目,延展和協議。下面具體介紹下:
類目:為已知的類增加新的方法;
延展:通知在本類的定義里使用類目來聲明私有方法;
協議:協議聲明了可以被任何類實現的方法。
但是大家一定要知道,這些手段只能增加類的方法,不過不能用于增加實例變量,要增加類的實例變量,只用通過定義子類來間接實現。
1、類目
1)聲明類目
注:這個聲明有兩大特點:
1.1、現有類位于@interface關鍵字之后,其后是位于圓括號中的一個新名稱。表示類別的名稱是
NumberConvenience,而且該類別將向NSString類中添加方法。只要保證類別名稱的唯一性,你可以向一個類中添加任意多得類別。
1.2、可以指定希望向其添加類別的類以及類別的名稱,同時還可列出添加的方法,最后以@end結束。但是因為不
能添加新實現變量,所以和類聲明有區別的是,類別的聲明中沒有實例變量部分。
2)類目的局限性
2.1、無法向類中添加新的實例變量。類別沒有位置容納實例變量。
2.2、名稱沖突,即類別中得方法與現有的方法重名。當發生名稱沖突時,類別具有更高的優先級。你得類別方法將完全取代初始方法,從而無法再使用初始方法。有些編程人員在自己的類別方法中增加一個前綴,以確保不發生名稱沖突。
有一些技術可以克服類別無法增加新實例變量的局限。例如,可以使用全局字典存儲對象與你想要關聯的額外變量之間的映射。但此時你可能需要認真考慮一下,類別是否是完成當前任務的最佳選擇。
3)類目的作用
cocoa中得類別主要用于3個目的:
3.1、將類的實現分散到不同文件或者不同框架中。
3.2、創建對私有方法的前向引用。
3.3、向對象添加非正式協議。
2、延展
可以看成是一種匿名的類目,有時候需要一些只是自己看見的,所用的私有方法這種私有方法可以通過延展的方式
來聲明,定義的方法在類本身的@implementation代碼區域中進行實現。
定義延展(舉例)
當在定義延展的時候不提供類目名時,延展中定義的方法既被視為“必須實現”的API在這種情況下,如果方法缺少實現代碼,則編譯器會報警告,此時方法的實現必須出現在類主體的@implementation代碼塊中。
3、協議和代理模式
但是,協議只聲明方法,不做具體實現,接受協議的對象來實現。OC的協議是由@protocol聲明的一組方法列表,要求其它的類去實現,相當于@interface部分的聲明。
這么說大家可明白?不明白也沒關系,可以隨時我們這邊溝通,也可多看一些視頻教程
http://www.lanou3g.com/news_show.php?id=279學習一下!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。