執行時建立類

2021-08-13 06:44:11 字數 1343 閱讀 2321

a.使用objc_allocateclasspair建立乙個類class

const char * classname = 「calculator」;

class kclass = objc_getclass(classname);

if (!kclass)

b.使用class_addivar新增乙個成員變數

nsuinteger size;

nsuinteger alignment;

nsgetsizeandalignment(「*」, &size, &alignment);

class_addivar(kclass, 「expression」, size, alignment, 「*」);

注:

2."*"星號代表字元(),ios字元為4位,並採用4位對齊kclass

c.使用class_addmethod新增成員方法

class_addmethod(kclass, @selector(setexpressionformula:), (imp)setexpressionformula, 「v@:@」);

class_addmethod(kclass, @selector(getexpressionformula), (imp)getexpressionformula, 「@@:」);

static void setexpressionformula(id self, sel cmd, id value)

static void getexpressionformula(id self, sel cmd) 注:

2."v@:@",解釋v-返回值void型別,@-self指標id型別,:-sel指標sel型別,@-函式第乙個引數為id型別

3."@@:",解釋@-返回值id型別,@-self指標id型別,:-sel指標sel型別,

d.註冊到執行時環境

objc_registerclasspair(kclass);

e.例項化類

id instance = [[kclass alloc] init];

f.給變數賦值

object_setinstancevariable(instance, 「expression」, 「1+1」);

g.獲取變數值

void * value = null;

object_getinstancevariable(instance, 「expression」, &value);

h.呼叫函式

[instance performselector:@selector(getexpressionformula)];

OC執行時動態建立類

it168技術 在前文 深入淺出cocoa之類與物件 一文中,我已經詳細介紹了objc中的 class 與 object 的概念,今天我們來如何在執行時動態建立類。下面這個函式就是應用前面講到的class,metaclass的概念,在執行時動態建立乙個類。這個函式來自 inside mac os x...

執行時建立類的小問題

希望執行時根據字串建立類,用反射實現了。if type.gettype dw key null console.writeline 錯誤 未找到相應的資料處理類dw key datawrapbase dw datawrapbase system.activator.createinstance ty...

C 類的執行時識別與建立

以前一直以為執行時的類建立不過是new 乙個class,可是直想自己實現的時候發現並非這麼簡單。現在總結起來要實現之也不外乎實現以下幾條 1 類可以通過new來建立,這個是必須的也是必然的,c 肯定支援。2 由名稱到類或者類建立函式的對映關係。這個需要我們自己實現,像mfc的cruntimeclas...