iOS給已有類新增屬性

2021-07-06 05:01:11 字數 1268 閱讀 9796

給已有類新增方法使用類別(category)就可以了, 步驟也很簡單, xcode已整合好了建立類別的框架. 

那麼怎麼給已有類拓展乙個屬性, 甚至更多呢? 網上也有不少方法, 我在此分享一種使用runtime機制來實現此功能.

以nsstring為例: 

給nsstring類新增兩種型別的屬性, 字串型別的tag值strflag, 以及int型的tag值inttag. 

定義這個兩個屬性的set和get方法:

@inte***ce nsstring (ass)

// 物件屬性的set和get

- (void)setstrflag:(nsstring *)strflag;

- (nsstring *)strflag;

// 非物件屬性的set和get

- (void)setintflag:(int)intflag;

- (int)intflag;

@end

實現這四個方法:

需匯入runtime標頭檔案:

#import
@implementation nsstring (ass)

static int _intflag;

static nsstring *_strflag;

- (void)setstrflag:(nsstring *)flag

- (nsstring *)strflag

- (void)setintflag:(int)intflag

- (int)intflag

@end

使用規則和類別差不多, 乙個是拓展了方法, 乙個是拓展了屬性而已:

nsstring *str = @"macro "; // 定義乙個系統的nsstring物件

str.strflag = @"abc"; // 給字串tag賦值

str.intflag = 456; // 給int型tag賦值

nslog(@"%@:%@-%d", str, str.strflag, str.intflag); // 使用拓展的屬性

工程原始碼

oracle給已有表新增主鍵

1,建立序列名 create sequence customer id seq increment by 1 每次加幾個 start with 1 從1開始計數 nomaxvalue 不設定最大值 nocycle 一直累加,不迴圈 cache 10 快取一旦定義了customer id seq序列,...

給已有的專案新增govendor

go get u v github.com kardianos govendorcd 到專案目錄下 執行 govendor init govendor add external參考大佬文章 更新引用的本地專案 update 如user manage專案裡面引用了order manage專案。當ord...

iOS分類新增屬性

我們可以通過runtime來給ios的分類新增屬性.1.首先我們像普通的類一樣在.h裡頭使用 property宣告乙個屬性 ch.h.這裡是 類的ch分類的.h檔案 inte ce ch property nonatomic strong nsstring name end這時,m中就會出現兩個警告...