iOS 類目,延展,協議

2021-07-04 01:12:27 字數 1640 閱讀 6102

1.類目

類目就是為已存在的類新增新的方法。但是不能新增例項變數。比如系統的類,我們看不到他的.m檔案,所以沒有辦法用直接新增方法的方式去實現。

@inte***ce nsmutablearray (sort) //為nsmutablearray類新增sort方法,sort就是類目名,做到見名知意

-(void)invert;//方法

@end

實現部分

#import "nsmutablearray+sort.h"

@implementation nsmutablearray (sort)

-(void)invert

-(void)text

@end

外界  [student hello]的時候就會列印出「你好」。但是在外界不能呼叫text方法,[student text]是不對的。只能在.m檔案裡邊通過self來呼叫私有方法text。隱藏了內部的實現。

3.協議

(1).協議宣告了可以被其他的類實現的方法。協議本身必不會去實現。

(2).協議不是類,只是乙個其他物件可以實現的介面。

定義乙個協議:

#import

@protocolmarryprotocol 

//定義乙個結婚協議,結婚協議也可以繼承其它的協議。

@required   //必須遵守的協議,在遵守

marryprotocol

協議的類的.m檔案中去實現裡邊的方法。

- (void)washclothes;

- (void)cook;

@optional  //可選的協議

- (void)makemoney;

@end

**(委託)模式:自己有需求,但是讓別人去做。

定義乙個men類

#import

#import "roomservice.h" 

@inte***ce men : nsobject

@property(nonatomic,retain)nsstring * name;

@property(nonatomic,assign)id mate;//定義乙個**

-(id)initwithname:(nsstring *)name;

-(void)needeat;

@end

定義乙個women類

#import

#import "

marryprotocol"

@inte***cewomen : nsobject <

marryprotocol>  //遵守協議

@property(nonatomic,retain)nsstring * name;

-(id)initwithname:(nsstring *)name;

@end

在men的實現裡邊

-(void)needeat

在women的實現裡邊有乙個方法

-(void)cook

主函式裡邊

men.mate = women;

[men needeat];

列印出:wonmen正在做飯

4.協議也可以寫在乙個類裡邊,用到的時候引入類的標頭檔案就可以。

蘋果開發群 :414319235  歡迎加入  歡迎討論問題

類目 延展 協議

1.類目 類目就是為已存在的類新增新的方法。但是不能新增例項變數。比如系統的類,我們看不到他的.m檔案,所以沒有辦法用直接新增方法的方式去實現。inte ce nsmutablearray sort 為nsmutablearray類新增sort方法,sort就是類目名,做到見名知意 void inv...

延展 協議 類目

一.延展 1.延展以 inte ce開頭,然後寫當前延展的類名,類名後加乙個 到 end結束 2.一般延展會寫在自己寫的.m檔案中,把一些不想讓外部呼叫的屬性放在延展裡,這樣這條屬性只能夠在類的內部使用,外部使用不了,盡最大可能保護當前類的安全 3.類目一般是給看不見.m的檔案進行擴充套件,延展一般...

類目, 延展, 協議

1.類目 類目就是為已存在的類新增新的方法。但是不能新增例項變數。比如系統的類,我們看不到他的.m檔案,所以沒有辦法用直接新增方法的方式去實現。inte ce nsmutablearray sort 為nsmutablearray類新增sort方法,sort就是類目名,做到見名知意 void inv...