日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

常用的OC中的反射

發(fā)布時(shí)間:2023/12/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用的OC中的反射 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

OC中的反射是基于runtime實(shí)現(xiàn)的

1.字符串和class的轉(zhuǎn)換

Class class = NSClassFromString(@"Person"); //類(lèi)名的字符串Person *p1 = [[class alloc] init];

2.將類(lèi)名轉(zhuǎn)換為字符串

Class class = [Person class];NSString *classString = NSStringFromClass(class);

3.字符串和內(nèi)部方法轉(zhuǎn)換(SEL)

SEL sel = NSSelectorFromString(@"eat");if ([p1 respondsToSelector:sel]) {[p1 performSelector:sel];}

4.將方法變?yōu)樽址?/p> NSString *methodString = NSStringFromSelector(@selector(eat));

5.將協(xié)議變成字符串

Protocol *ptlName = NSProtocolFromString(@"NSCopying");

6.將字符串變成協(xié)議

NSString *stringFromProtocol = NSStringFromProtocol(@protocol(NSCopying))

7.字符串和屬性的轉(zhuǎn)換

OC中屬性的反射通過(guò)KVC(Key-Value Coding)機(jī)制實(shí)現(xiàn),KVC是一種間接訪問(wèn)對(duì)象屬性的機(jī)制,不直接調(diào)用getter 和 setter方法,而使用valueForKey 來(lái)替代getter 方法,setValue:forKey來(lái)代替setter方法。

8.判斷繼承關(guān)系

NSString *str = [[NSString alloc]init];// 判斷當(dāng)前的類(lèi)是否為此類(lèi)的對(duì)象[str isMemberOfClass:[NSString class]];// 判斷是否為某一個(gè)類(lèi)或者子類(lèi)的對(duì)象[str isKindOfClass:[NSString class]];// 判斷對(duì)視是否實(shí)現(xiàn)了指定的協(xié)議[str conformsToProtocol:@protocol(NSCopying)];// 是否實(shí)現(xiàn)對(duì)應(yīng)的方法[str respondsToSelector:@selector(printAction)];

總結(jié)

以上是生活随笔為你收集整理的常用的OC中的反射的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。