Objective-C反射机制:是类似于Java的反射机制,这种动态机制可以让oc语言更加的灵活。这句话是对oc反射机制的初步认识,不过具体的怎么类似于java机制,怎么让oc更加的灵活,还得看下面的内容才能了解。

oc反射机制有三个用途:

1.获得Class

      2.检查继承关系

      3.动态的调用方法

1. 获得class

#import "Person.h"

  

// 1.通过字符串来获得Class

Class className = NSClassFromString(@"Person");

NSLog(@"%@", className);

// 2.直接使用Class来创建 一般情况之下我们都用这种方式创建对象

Person *person = [[Person alloc] init];

NSLog(@"%@", person);

// 通过实例对象获得Class

NSLog(@"%@", [person class]);

// 3.通过类来获得Class

NSLog(@"Person.Class = %@", [Person class])

2.检查继承关系

// NSObject提供的了一下几个方法可供一般(继承于NSObject)的对象直接调用

// 通过对象来判断该对象的Class

Person *person = [[Person alloc] init];

NSLog(@"[person class] =  %@", [person class]);

// 判断对象是否为某个类的实例对象

NSLog(@"person是否是Person的实例对象:%d", [person isMemberOfClass:Person.class]);

// 判断实例对象是都为某个类及其子类的实例

NSLog(@"[person isKindOfClass:[person class]] = %d ", [person isKindOfClass:[person class]]);

// 判断的实例对象是否实现了指定的协议

NSLog(@"%d", [person conformsToProtocol:@protocol(UITableViewDelegate)]);

3.动态的调用方法

// 此处希望能动态的调用move方法

// 使用 performSelector: withObject: 动态的调用move:方法

[self performSelector:@selector(move:) withObject:@2];

[self performSelector:NSSelectorFromString(@"move:") withObject:@10];

// 使用objc_msgSend 进行实现方法

objc_msgSend(self, @selector(move:), @4);

objc_msgSend(self, @selector(test:andNum:), @1, @2);

转载于:https://www.cnblogs.com/lltcom/p/5893738.html

Objective-C反射机制相关推荐

  1. Java的反射作用_浅析Java 反射机制的用途和缺点

    反射的用途 Uses of Reflection Reflection is commonly used by programs which require the ability to examin ...

  2. C++ 通过模版工厂实现 简单反射机制

    前言 我们知道Java/Python这种语言能够很好得 支持反射.反射机制 就是一种用户输入的字符串到对应实现方法的映射,比如http接口中 用户传入了url,我们需要调用该url对应的方法/函数对象 ...

  3. Golang反射机制的实现分析——reflect.Type方法查找和调用

    在<Golang反射机制的实现分析--reflect.Type类型名称>一文中,我们分析了Golang获取类型基本信息的流程.本文将基于上述知识和经验,分析方法的查找和调用.(转载请指明出 ...

  4. Golang反射机制的实现分析——reflect.Type类型名称

    现在越来越多的java.php或者python程序员转向了Golang.其中一个比较重要的原因是,它和C/C++一样,可以编译成机器码运行,这保证了执行的效率.在上述解释型语言中,它们都支持了&quo ...

  5. Java学习总结:39(反射机制)

    反射机制 JAVA中反射是动态获取信息以及动态调用对象方法的一种反射机制. Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属 ...

  6. OC 的反射机制以及使用场景

    OC 的反射机制 一 定义概念 普遍的概念就是类似于java的反射机制,动态机制使得OC语言更加灵活. 反射机制就是可以根据指定的类名获取类的相关信息. 二 作用 1 根据类名获得class // 选 ...

  7. 利用java反射机制 读取配置文件 实现动态类载入以及动态类型转换

    作者:54dabang 在spring的学习过程之中,我们能够看出通过配置文件来动态管理bean对象的优点(松耦合 能够让零散部分组成一个总体,而这些总体并不在意之间彼此的细节,从而达到了真正的物理上 ...

  8. 【教程】【FLEX】#004 反射机制

    总结: 目前用到反射的主要有两个方法 1.  getDefinitionByName    //根据类名,返回对象(反射实例化对象) 2.  describeType                 ...

  9. Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法...

    Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法 www.MyException.Cn   发布于:2012-09-15 ...

  10. 利用Java反射机制和poi插件操作excel

    最近在公司写一个利用poi插件读取excel的东西,,不想每一个都写一遍解析代码.就想利用Java的反射机制,写对应的实体类,获取对应excel中的值,下面是解析的代码,仅供参考.不足之处,望指出/* ...

最新文章

  1. 原创 | 从智慧交通、智慧安防、智能电网三大应用场景看我国智慧城市建设现状...
  2. java 文件读取 进度_读取文本文件时如何使用Java进度栏?
  3. C++多小球非对心弹性碰撞(HGE引擎)
  4. wxWidgets:wxSlider类用法
  5. 在Idea中测试各JVM语言的交互性
  6. 链表之删除单链表倒数第K个节点
  7. 【转】magento性能优化的教程(非常详细)
  8. stm32F051系列 单片机引脚定时器输出pwm波形控制风扇转速
  9. [CodeForces332E]Binary Key
  10. ELK学习总结(3-2)elk的过滤查询
  11. 架构一个可承受千万级访问量的动态扩展CMS
  12. 5G火车站来了!上海虹桥火车站5G网络建设正式启动...
  13. 华为网络配置(DHCP)
  14. matlab自带的优化工具箱,MATLAB 自带优化工具箱(optimization Tool)之遗传算法简述...
  15. flutter 相机加入mask(遮罩层)
  16. JavaScript 验证码制作
  17. Redis(2)数据结构
  18. UC伯克利提出AIGC图像编辑新利器InstructPix2Pix,AI模型P图更加精细
  19. 不同操作系统计算机传输文件(scp命令)
  20. Mac 电脑四大类生产力软件,你还缺少哪些?

热门文章

  1. slf4j的简单用法以及与log4j的区别
  2. error PRJ0003 : 生成“cl.exe”时出错 解决方案
  3. python对json的相关操作
  4. Taro+react开发(61) 一条虚线
  5. 前端学习(3313):redux的基本操作
  6. 前端学习(3285):立即执行函数四
  7. 前端学习(3022):vue+element今日头条管理-首页layont布局
  8. [html] HTML5中的article和section有什么区别?
  9. 前端学习(2881):初始化dom和数据化线程池
  10. 前端学习(2814):小程序学习之建立第一个项目