iOS NSClassFromString

1.通過字符串創建類和對象
Class A = NSClassFromString(@"AAA");
id cls = [[NSClassFromString(@"ViewController") alloc]init];

2.通過類獲取類名稱字符串
NSString *str = NSStringFromClass(self);

3.通過字符串(已存在的方法名稱)獲取一個SEL
SEL selector = NSSelectorFromString(@"textFunc");

4.執行某個類的 每一個方法

//沒有參數 類方法  返回值為BOOL
Class  AAA = NSClassFromString(@"WXSocialAgent");
    SEL selector = NSSelectorFromString(@"isWXAppInstalled");
    IMP imp = [AAA methodForSelector:selector];
    BOOL (*func)(Class, SEL) = (BOOL (*)(Class,SEL))imp;
    BOOL flag =  func(AAA,selector);
//有一個參數 類方法  無返回值
Class  AAA = NSClassFromString(@"WXSocialAgent");
    SEL selector = NSSelectorFromString(@"isWXAppInstalled");
    IMP imp = [AAA methodForSelector:selector];
    void (*func)(Class, SEL,id) = (void (*)(Class,SEL,id))imp;
    func(AAA,selector,@"abc");
//有多個參數 類方法  無返回值
Class  AAA = NSClassFromString(@"WXSocialAgent");
    SEL selector = NSSelectorFromString(@"isWXAppInstalled");
    IMP imp = [AAA methodForSelector:selector];
    void (*func)(Class, SEL,id,id) = (void (*)(Class,SEL,id,id))imp;
    func(AAA,selector,@"abc",@"ddf");
//有一個參數 實例方法  無返回值
    id  aaa = [[NSClassFromString(@"WXSocialAgent") alloc]init];
    SEL selector = NSSelectorFromString(@"isWXAppInstalled");
    IMP imp = [aaa methodForSelector:selector];
    void (*func)(id, SEL,id) = (void (*)(id,SEL,id))imp;
    func(aaa,selector,@"abc");
// 調用函數 有返回值
 id c = [[NSClassFromString(@"TestClass") alloc]init];
    SEL s = NSSelectorFromString(@"textFunction:");
    IMP imp = [c methodForSelector:s];
    void (*func)(Class, SEL,void(^)(NSString *)) = (void (*)(Class,SEL,void(^)(NSString *)))imp;
    if (c && [c respondsToSelector:s]) {
        func(c,s,^(NSString *string){
            NSLog(@"%@",string);
        });
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容