91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS中NSObject的兩種含義:類和協議詳解

發布時間:2020-08-21 10:25:59 來源:腳本之家 閱讀:169 作者:陳滿iOS 欄目:移動開發

前言

協議中<NSobject>是什么意思? 子類繼承了父類,子類會遵守父類遵守的協議嗎?

會遵守NSObject協議,但是只在頭文件中聲明,編譯器是不會自動生成實例變量的。需要自己處理getter和setter 方法

NS/CF/CG/CA/UI這些前綴分別是什么含義:

CF CocoaFundation框架

CG CoreGraphics框架

CA Coreanimatigon框架

UI UIkit框架

下面話不多說了,來一起看看詳細的介紹吧

1. 區分:類的NSObject與協議的NSObject

iOS開發中,蘋果提供的一些系統類都屬于NSObject的子類,例如UIColor類的定義如下所示。

iOS中NSObject的兩種含義:類和協議詳解

UIColor

或者自定義的類,也繼承自NSObject,例如下圖所示。

iOS中NSObject的兩種含義:類和協議詳解

自定義類的父類

但是,NSObject不僅僅代表基類,還有協議的意思,我們可以稱之根協議,例如下圖所示:

iOS中NSObject的兩種含義:類和協議詳解

NSObject協議

事實上,從NSObject類的定義可知,NSObject的類本身就遵循NSObject協議,如下圖所示。

iOS中NSObject的兩種含義:類和協議詳解

NSObject

2. 協議NSObject的用法

NSObject協議的定義

iOS中NSObject的兩種含義:類和協議詳解

普通協議的用法

@protocol MyProtocol
- (void)foo; 
@end

繼承根協議的用法

@protocol MyProtocol<NSObject> 
- (void)foo; 
@end

多繼承的用法

假設你自定義一個繼承自UITextField的子類MyTextFeild,同時自定義一個代理MyTextFeildDelegate的屬性如下:

@protocol MyTextFieldDelegate <NSObject>
//...

@property (nonatomic, weak) id <MyTextFeildDelegate> delegate;

這時候會報錯的,因為這個delegate與父類的delegate的協議沖突。一個解決辦法是利用協議的多繼承:將自定義的協議繼承自父類中的協議。

@protocol MyTextFieldDelegate <NSObject,UITextFieldDelegate>

//...
@property (nonatomic, weak) id <MyTextFeildDelegate> delegate;

3. 拓展

OC里面的類本來是不支持多繼承的,但有的面試官還是會問到iOS里面如何實現多繼承?除了運行時的辦法,還有一種就是通過協議的多繼承來實現。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

扎囊县| 鹰潭市| 丰都县| 周宁县| 二连浩特市| 红安县| 双牌县| 台安县| 鸡泽县| 永仁县| 谷城县| 诸暨市| 宜川县| 三明市| 丰原市| 宜阳县| 娱乐| 诸暨市| 莒南县| 民乐县| 军事| 聂拉木县| 鄂托克前旗| 崇义县| 上犹县| 广昌县| 太和县| 阿克| 榆林市| 海口市| 溧阳市| 闻喜县| 巴青县| 镇平县| 丰原市| 平乐县| 紫云| 商丘市| 达尔| 湖州市| 石阡县|