中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

杭锦旗| 宁城县| 杭锦后旗| 靖江市| 隆回县| 宜都市| 临沂市| 庄河市| 渝北区| 沧州市| 屏山县| 鄂伦春自治旗| 伊宁县| 通山县| 贞丰县| 汝阳县| 砚山县| 容城县| 青冈县| 邓州市| 佛山市| 揭阳市| 镇坪县| 扎囊县| 平凉市| 图木舒克市| 苗栗市| 浪卡子县| 南雄市| 宾阳县| 友谊县| 高阳县| 建水县| 海伦市| 石嘴山市| 永善县| 襄城县| 凉山| 苍梧县| 搜索| 永康市|