• iOS开发之IMP和SEL(方法和类的反射)


    1、SEL:类方法的指针,相当于一种编号,区别与IMP!

      IMP:函数指针,保存了方法的地址!

      SEL是通过表取对应关系的IMP,进行方法的调用!

    2、获取SEL和IMP方法和调用:

        SEL methodSel = @selector(str:);
        [self performSelector:methodSel withObject:nil];//方法的调用
        NSLog(@"===%p",methodSel);
        
        IMP methodImp = [self methodForSelector:methodSel];
        methodImp();//方法的调用
        NSLog(@"===%p",methodImp);
    - (void)str:(NSString *)str{
        NSLog(@"执行str方法……ForeverGuard博客园");
    }

      显示结果:

    3、通过反射获取方法名(包括class):

        NSString *methodName = NSStringFromSelector(methodSel);
        NSLog(@"映射===%@",methodName);
        
        NSString *className = NSStringFromClass([Father class]);
        NSLog(@"映射===%@",className);
        
        Class FatherClass = NSClassFromString(className);
        NSLog(@"映射===%@",FatherClass);

      显示结果:

    ForeverGuard博客园
  • 相关阅读:
    【每日日报】第四十六天
    jsp动作标识
    JSP注释
    request对象
    Servlet的创建和配置
    基于图书管理系统的浏览
    在JSP中应用JavaBean
    交流会
    基于图书管理系统的改
    基于图书管理系统的增
  • 原文地址:https://www.cnblogs.com/xianfeng-zhang/p/7476964.html
Copyright © 2020-2023  润新知