IOS協議 IOS分類 IOS擴充套件 總結

2021-07-31 05:53:40 字數 1984 閱讀 6554

1.協議

1.1 是一種要求,或是一種規則

1.2 對應程式來講,是只生成方法的宣告,不實現

1.3 協議必須被某個類採納,且在該類中給出協議中宣告的方法函式體

1.4 對於採納協議類的物件,可以和其它物件一樣使用

1.5 協議可以被繼承,包括多個父協議

1.6 協議可以被多重採納

下面一起看一下簡單的demo理解協議的使用

定義協議myprotocol.h

@protocol

myprotocol

@property

nsstring *content;

-(nsstring*)show;

@end

.h中< >遵守協議

@inte***ce

trmyclass : nsobject

@end

.m中實現協議方法

@implementation

myclass

@synthesize content = _content;

-(nsstring*)show

@end

2.分類

2.1 將乙個複雜的類分成若干個模組兒,其中每個模組兒被稱為乙個分類

2.2 分類的作用是降低耦合度

2.3 分類的語法

2.4 在使用帶分類的類時,只能看到主類,不會看到分類

2.5 分類中不能定義成員變數或屬性

2.6 可以給沒有源**的類新增分類

2.7 新增到主類中的分類可以被子類繼承

2.8 要注意,新增到分類中的方法名不要和主類中的方法名重名,如果重名,主類中的方法將被隱藏

分類我們通常用到的情況是,對於已有的類增加一些功能。比如我們經常會用到把字串轉為nsurl那麼我們就可以新增這樣乙個分類

.h中公開方法

@inte***ce

nsstring (yx)

- (nsurl *)yx_url;

@end

.m中實現轉換方法

@implementation

nsstring (yx)

- (nsurl *)yx_url

@end

這樣在所有的nsstring的物件中都可以呼叫yx_url ,直接將當前字串轉換成nsurl型別。

3.擴充套件

3.1 擴充套件很像乙個沒有名字的分類

3.2 用於定義類中的私有成員變數、屬性或方法

3.3 兩種語法形式

3.3.1 單獨寫在乙個.h檔案中,擴充套件中的成員變數預設是私有的,屬性和方法預設是公有的。但支援修改訪問許可權

3.3.2 將擴充套件寫在主類的.m檔案中,此時擴充套件中的成員變數、屬性和方法都是私有的

在ios中擴充套件其實我們經常使用,只不過不知道叫什麼而已。比如我們在xib搭建介面的時候,需要把控制項拖拽成屬性或是新增某些控制項為全域性屬性,就會在.m中看到這樣的**。這就是擴充套件

@inte***ce

recommendtableviewcontroller ()

@property (nonatomic, strong)rootmodel *rootmodel;

@property (nonatomic, strong)uicollectionview *cv;

@property (nonatomic, strong)homeloopview *loopview;

@end

下面總結一下區別:

4 擴充套件與分類的區別

4.1 有沒有.m檔案,擴充套件沒有,分類有

4.2 有沒有成員變數或屬性,擴充套件中有,分類中沒有

5 擴充套件與協議的區別:協議可以被任何類採納。但擴充套件只屬於主類

iOS 繼承 分類和類擴充套件

繼承是指乙個新類擁有被繼承類 父類 的全部屬性和方法。例如,只有繼承nsobject,才有建立物件的能力。nsobject是大部分類的基類 根類,root class 當a類繼承b類,a類就擁有b類中所有成員變數 屬性 和方法。這也是繼承的主要目的。使用場景 當我們可以說通b是乙個a時,就可以使用b...

ios 分享擴充套件

1,建立分享擴充套件 file new target 2,設定分享的時候必須要指定 乙個擴充套件規則 讀取 group 中的資料就可以使用 group.來獲取資料 nsfilemanager filemanager nsfilemanager defaultmanager 簡單的理解就是 擴充套件 ...

iOS 類擴充套件與分類的區別

類擴充套件 class extension也有人稱為匿名分類 能為某個類附加額外的屬性,成員變數,方法宣告 一般的類擴充套件寫到.m檔案中 一般的私有屬性寫到類擴充套件 inte ce mitchell 屬性 方法 end分類的小括號中必須有名字 inte ce 類名 分類名字 方法宣告 end i...