日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

常用的OC中的反射

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

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

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

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

2.將類名轉(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中屬性的反射通過KVC(Key-Value Coding)機制實現(xiàn),KVC是一種間接訪問對象屬性的機制,不直接調(diào)用getter 和 setter方法,而使用valueForKey 來替代getter 方法,setValue:forKey來代替setter方法。

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

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

總結(jié)

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

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