iOS NSObject的兩種含義 類與協議

2021-08-28 06:15:25 字數 1186 閱讀 9470

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

ios開發中,蘋果提供的一些系統類都屬於nsobject的子類,例如uicolor類的定義如下所示。

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

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

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

2. 協議nsobject的用法

@protocol myprotocol- (void)foo; @end
@protocol myprotocol - (void)foo; @end
假設你自定義乙個繼承自uitextfield的子類mytextfeild,同時自定義乙個**mytextfeilddelegate的屬性如下:

@protocol mytextfielddelegate //...@property (nonatomic, weak) id  delegate;
這時候會報錯的,因為這個delegate與父類的delegate的協議衝突。乙個解決辦法是利用協議的多繼承:將自定義的協議繼承自父類中的協議。

@protocol mytextfielddelegate //...@property (nonatomic, weak) id  delegate;
3. 拓展oc裡面的類本來是不支援多繼承的,但有的面試官還是會問到ios裡面如何實現多繼承?除了執行時的辦法,還有一種就是通過協議的多繼承來實現。

iOS NSObject的兩種含義 類與協議

1.區分 類的nsobject與協議的nsobjectios開發中,蘋果提供的一些系統類都屬於nsobject的子類,例如uicolor類的定義如下所示。或者自定義的類,也繼承自nsobject,例如下圖所示。但是,nsobject不僅僅代表基類,還有協議的意思,我們可以稱之根協議,例如下圖所示 事...

mysql的兩種引擎 mysql的兩種儲存引擎

背景 最近在使用spring data jpa操作mysql,在使用jpa的自動建表功能之後,處理多對多關係 manytomany的時候,spring data jpa會給中間表的兩個欄位都加上外來鍵引用。當前使用的版本預設的資料庫儲存引擎為myisam。這種儲存引擎是為資料庫查詢效能而生的,不支援...

Divide Two Integers 的兩種解法

divide two integers without using multiplication,division and mod operator.if it is overflow,return max int.解題思路 1.通過被除數減去除數來得到被除數中包含多少個除數,一直減到被除數小於等於...