iOS為類別新增屬性的方法 RunTime

2021-07-11 05:27:17 字數 1250 閱讀 4517

一般認為category不能新增變數,其實系統已經告訴我們是可以的.

這傢伙已經給uiviewcontroller新增了圖中的幾個屬性,那麼如何實現?

其實是使用@

dynamic

來動態新增的。 (即執行時

runtime)

**:

1.建立person類

#import

@inte***ce person :nsobject

@property(nonatomic,copy)

nsstring

* name;

@end

2.建立person的類別

#import "person.h"

// 新增額外兩個屬性

@inte***ce person (addproperty)

@property(nonatomic,assign)

nsinteger

age;

@property(nonatomic,copy)

nsstring

* stu;

@end

3.person類別.m的實現

#import "person+addproperty.h"

#import

@implementation person (addproperty)

static

char namekey = 'n';

static

char stukey = 's';

// 給age屬性提供getter和setter方法

- (nsinteger)age

- (void)setage:(nsinteger)age

// 給stu屬性提供getter和setter方法

- (nsstring*)stu

- (void)setstu:(nsstring *)stu

@end

4.用一下吧

#import "viewcontroller.h"

#import "person+addproperty.h"

@inte***ce

viewcontroller()

@end

@implementation viewcontroller

- (void)viewdidload

iOS 為分類新增屬性

我們知道分類可以很簡單的新增方法,但是新增屬性卻無能為力,但是我們還是可以通過動run time的associate就可以做到 比如說我要在uimage中新增乙個url屬性 h inte ce uiimage url property nonatomic,copy nsstring url end ...

iOS為Category新增屬性

一般認為category不能新增變數,其實可以使用 dynamic 來動態新增的。即執行時runtime 分類裡面不能新增ivar是因為分類本身並不是乙個真正的類,它並沒有自己的isa。原文出自 1.建立uiviewcontroller的類別並新增幾個屬性 import inte ce uiview...

為類動態新增屬性和方法

動態新增屬性 import types class person object country china def init self,name self.name name 動態刪除屬性和方法 del delattr p1 person zhiliao print p1.name del p1.n...