Objective C 類的擴充套件

2021-09-08 13:03:21 字數 3760 閱讀 7686

category,分類或類目。主要作用是為沒有原始碼的類加入方法。通過category加入的方法會成為原類的一部分。

從而達到擴充套件乙個類的功能。

定義category過程

新建⽂件

選擇objective-c category模板

填寫類名和分類名

.h⽂件加入⽅法宣告

.m加入⽅法實現

category的宣告

nsstring+sayhi.**件

@inte***ce

nsstring (sayhi)

- (void)hi;

@end

category的實現

nsstring+sayhi.m檔案

#import 「nsstring+sayhi.h」

@implementation

nsstring(sayhi)

- (void)hi

@end

category與⼦類的差別

category(類目)subclass(子類)

功能僅僅能為類加入方法

既能為類加入方法。也能加入變數

特點新加入的方法會變成原始類的一部分,能被子類繼承

新加入的方法僅僅有子類才有。父類沒有

使用使用原始類的例項(-號方法)或者使用原始類(+號方法)呼叫方法

子類才幹呼叫,

extension,延展。主要作用是管理類的「私有」方法。物件導向程式設計在設計乙個類的時候,有些方法須要對外公開(我們稱為介面)。有些方法僅僅內部使用。

extension的功能是幫我們去管理這些內部使用的方法(「私有」方法)。

定義extension過程

extension的語法格式和category非常類似,相當於把category的.**件放到了原始類的.m檔案裡。extension針對的是本類。必須有原始碼的類。

***.m檔案

@inte***ce

*** (extensionname)

//你的方法列表

@end

@implementation

*** //方法的實現

@end

category和extension的差別

categoryextension

作用為沒有原始碼的類加入方法

管理類的私有方法

格式定義一對.h和.m

把**寫到原始類的.m檔案裡

protocol。協議。是ios開發中經常使用的技術。協議是一套標準(一堆方法的宣告),僅僅有.**件。

就像一張任務清單,上⾯寫了一堆須要處理的事。清單交給誰,誰就要去完畢清單上規定的任務。接受協議的物件實現協議中定義的方法。

即:清單交給誰。誰就要去完畢清單上規定的任務。

協議分兩種: 正式協議和非正式協議。

協議中的方法預設是必須實現的,即@required。

關鍵字@optional修飾的⽅法是可選的,可實現也能夠不實現。

協議和**6個步驟

宣告協議

設定**人屬性

讓**人呼叫方法(通知**人執行方法)

簽訂協議

指定**人

實現協議方法

以結婚為樣例(女方和男方)

宣告協議 (女方)

設定**人屬性 (女方)

讓**人呼叫方法(通知**人執行方法) (女方)

簽訂協議 (男方)

指定**人 (女方)

實現協議方法 (男方)

結婚演示樣例的**實現:

girl.**件**例如以下:

#import 

#pragma mark 協議第一步

/* 宣告協議 */

@protocol

marry

/* 方法分兩種 */

@required

/* 必需的 */

- (void)makemoney;

@optional

/* 可選的 */

- (void)washcloth;

- (void)cook;

@end

@inte***ce

girl : nsobject

#pragma mark 協議第二步

/* 設定**人屬性, 注意:assign */

@property (nonatomic, assign) id

delegate;

@property (nonatomic, retain) nsstring *name;

@property (nonatomic, assign) nsinteger age;

#pragma mark 協議第三步

/* 通知**人呼叫方法 */

- (void)marry;

@end

girl.m檔案**例如以下:

#import "girl.h"

@implementation

girl

#pragma mark 協議第三步

/* 通知**人呼叫方法 */

- (void)marry

@end

boy.**件**例如以下:

#import 

#import "girl.h" /* 僅僅能是import */

#pragma mark 協議第四步

/* 簽訂協議 */

@inte***ce

boy : nsobject

@property (nonatomic, retain) nsstring *name;

@property (nonatomic, assign) nsinteger age;

@end

boy.m檔案**例如以下:

#import "boy.h"

@implementation

boy#pragma mark 協議第六步

/* 實現協議方法 */

- (void)makemoney

@end

main.m檔案**例如以下:

#import

#import

"girl.h"

#import

"boy.h"

int main(int argc, const

char * ar**)

return

0; }

protocol的核⼼使用場景是實現delegate設計模式。delegate(**)。通俗的講就是**商。基本的任務是幫你完

成一些任務。比方:保姆就能夠覺得是delegate,基本的任務是幫你帶孩子、做飯、洗衣服等。

使⽤場景:凡是某些任務⾃己不去實現,想讓別人去實現的時候。就能夠指定乙個**。讓**幫你去做。

你僅僅須要通知**去做某事。

objective c類別和類擴充套件學習筆記

類別是對已經存在的類的一種擴充套件方式。可以為其新增新的方法和屬性,但是不能新增新的例項變數。如果新增例項變數,就會破壞已存在的類原有的結構 命名方式 inte ce nsstring mynsstring void getstrlength 優點 可以把類的實現放在不同的檔案中,減小檔案的大小。缺...

Objective C 協議 分類 擴充套件

1.協議是一種要求,或者一種規則 2.對程式來講,是只宣告,不實現 3.協議必須被某個類採納且在該類中給出協議中方法的函式體 4.對於採納協議的類,可以和其他類一樣使用建乙個協議myprotocol h檔案 import protocol czmyprotocol property nsstring...

Objective C 類的定義

這次,我們介紹objective c是如何定義乙個完整的類。定義乙個類都包括哪些部分,為了簡單明瞭,更加直接,列舉了乙個20多行 的小例子。那麼,讓我們先看下面這個簡單的例子 1 2 3 4 5 6 7 8 9 10 11 import 引用foundation庫標頭檔案 inte cefracti...