iOS之類別 category 的使用

2021-06-28 05:11:15 字數 1966 閱讀 8950

1、類別介面語法格式

@inte***ce    已有類  (類別名)

//定義方法

@end

2、類別實現部分語法格式

@implementation   已有類   (類別名)

//方法實現

@end

3、例項

為nsnumber新增乙個類別

1)nsnumber+fk.h

#import // 定義乙個類別

@inte***ce nsnumber (fk)

// 在類別中定義4個方法

- (nsnumber*) add: (double) num2;

- (nsnumber*) substract: (double) num2;

- (nsnumber*) multiply: (double) num2;

- (nsnumber*) divide: (double) num2;

@end

2)nsnumber+fk.m

#import "nsnumber+fk.h"

// 為類別提供實現部分

@implementation nsnumber (fk)

// 實現類別的介面部分定義的4個方法

- (nsnumber*) add: (double) num2

- (nsnumber*) substract: (double) num2

- (nsnumber*) multiply: (double) num2

- (nsnumber*) divide: (double) num2

@end

3)使用

#import #import "nsnumber+fk.h"

int main(int argc , char * argv)

}

類別說明:

4、使用類別呼叫私有方法

沒有在介面中定義而是直接在類實現部分定義的方法相當於私有方法,通常不允許被呼叫。但是可以通過nsobject的performselector:方法執行動態呼叫,但是避開了編譯器的檢查,並不太好。此外,還可以通過類別定義前向引用,從而實現私有方法的呼叫,如下**:

1)fkitem.h

#import // 定義類的介面部分

@inte***ce fkitem : nsobject

@property (nonatomic , assign) double price;

- (void) info;

@end

2、fkitem.m

#import "fkitem.h"

// 為fkitem提供實現部分

@implementation fkitem

@synthesize price;

// 實現介面部分定義的方法

- (void) info

// 額外新增的方法

- (double) caldiscount:(double) discount

@end

3、錯誤使用

#import #import "fkitem.h"

int main(int argc , char * argv)

}

使用類別修正

#import #import "fkitem.h"

// 為fkitem定義乙個類別,前向宣告

@inte***ce fkitem (fk)

// 在類別中前向宣告caldiscount:方法

- (double) caldiscount:(double)discount;

@end

int main(int argc , char * argv)

}

iOS開發之類別 擴充套件

在ios專案開發中允許使用類別為現有的類新增新的方法,並不需要建立子類。通過類別我們可以動態地為現有的類新增新的方法,可以將類的定義模組化地布局到多個相關檔案中。使用類別的好處為 一 進行模組化設計 二 利用類別來呼叫私有方法 介面部分格式如下 inte ce 已有類 類別名 方法的定義 end 注...

iOS開發之類別 擴充套件

在ios專案開發中允許使用類別為現有的類新增新的方法,並不需要建立子類。通過類別我們可以動態地為現有的類新增新的方法,可以將類的定義模組化地布局到多個相關檔案中。使用類別的好處為 一 進行模組化設計 二 利用類別來呼叫私有方法 介面部分格式如下 inte ce 已有類 類別名 方法的定義 end 注...

iOS 靜態庫中使用類別 Category

如果我們生成乙個靜態庫,庫中包含類別的定義以及使用,在使用庫的專案中,當用到類別的方法時,程式就會crash,找不到對應的方法實現 環境 xcode6 遇到這種問題,解決辦法有兩個 1 一是把類別檔案新增進來 如果是第三方庫,就不太現實 2 目標工程中新增鏈結選項 all load。即在目標工程的t...