OC 的反射機制

2021-07-31 18:26:01 字數 862 閱讀 8459

class 的反射:

通過類名的字串形式例項化物件

class class = nsclassfromstring@(@"student");

student *stu = [[class alloc] init];

將類名變成字串

class class = [student class];

string *classname = nsstringfromclass(class);

sel的反射

sel sector = nsselectorfromclass(@"setname");

[stu performselector:selector withobject:@"mike"];

將方法變成字串

nsstringfromselector(@selector*(setname:))

什麼是sel?如何宣告乙個sel?通過哪方法能夠,呼叫sel包裝起來的方法

sel 就是對方法的一種包裝。包裝的sel型別資料他對應的方法位址,找到位址就可以呼叫方法。在記憶體中每個類的方法都儲存在類的物件中,每個方法都有乙個與之對應的sel型別的資料,根據乙個sel資料就可以找到對應的位址,進而呼叫方法。

sel s1= @selector(test1) ;//將test1方法包裝廠sel物件。

sel s2 = nsselectorfromstring(@"test1");//將乙個字串方法轉換成為sel物件

呼叫方法有兩種方式:

1直接通過方法名呼叫[person text];

2間接的通過sel資料來呼叫sel aaa = @selector(text);

[person performselector:aaa];

C 的反射機制

type type cassembly.assembly.gettype moduleclass object params new object 3 params 0 modulecode params 1 titlefront modulename params 2 e no igeneraht...

PHP的反射機制

php5新增了一項新的功能 reflection。這個功能使得phper可以reverse engineer class,inte ce,function,method and extension。通過php 就可以得到某object的所有資訊,並且可以和它互動。反射是什麼?它是指在php執行狀態中...

PHP的反射機制

php5新增了一項新的功能 reflection。這個功能使得phper可以reverse engineer class,inte ce,function,method and extension。通過php 就可以得到某object的所有資訊,並且可以和它互動。反射是什麼?它是指在php執行狀態中...