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...