Objective-C反射机制
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反射机制相关推荐
- Java的反射作用_浅析Java 反射机制的用途和缺点
反射的用途 Uses of Reflection Reflection is commonly used by programs which require the ability to examin ...
- C++ 通过模版工厂实现 简单反射机制
前言 我们知道Java/Python这种语言能够很好得 支持反射.反射机制 就是一种用户输入的字符串到对应实现方法的映射,比如http接口中 用户传入了url,我们需要调用该url对应的方法/函数对象 ...
- Golang反射机制的实现分析——reflect.Type方法查找和调用
在<Golang反射机制的实现分析--reflect.Type类型名称>一文中,我们分析了Golang获取类型基本信息的流程.本文将基于上述知识和经验,分析方法的查找和调用.(转载请指明出 ...
- Golang反射机制的实现分析——reflect.Type类型名称
现在越来越多的java.php或者python程序员转向了Golang.其中一个比较重要的原因是,它和C/C++一样,可以编译成机器码运行,这保证了执行的效率.在上述解释型语言中,它们都支持了&quo ...
- Java学习总结:39(反射机制)
反射机制 JAVA中反射是动态获取信息以及动态调用对象方法的一种反射机制. Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属 ...
- OC 的反射机制以及使用场景
OC 的反射机制 一 定义概念 普遍的概念就是类似于java的反射机制,动态机制使得OC语言更加灵活. 反射机制就是可以根据指定的类名获取类的相关信息. 二 作用 1 根据类名获得class // 选 ...
- 利用java反射机制 读取配置文件 实现动态类载入以及动态类型转换
作者:54dabang 在spring的学习过程之中,我们能够看出通过配置文件来动态管理bean对象的优点(松耦合 能够让零散部分组成一个总体,而这些总体并不在意之间彼此的细节,从而达到了真正的物理上 ...
- 【教程】【FLEX】#004 反射机制
总结: 目前用到反射的主要有两个方法 1. getDefinitionByName //根据类名,返回对象(反射实例化对象) 2. describeType ...
- Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法...
Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法 www.MyException.Cn 发布于:2012-09-15 ...
- 利用Java反射机制和poi插件操作excel
最近在公司写一个利用poi插件读取excel的东西,,不想每一个都写一遍解析代码.就想利用Java的反射机制,写对应的实体类,获取对应excel中的值,下面是解析的代码,仅供参考.不足之处,望指出/* ...
最新文章
- 原创 | 从智慧交通、智慧安防、智能电网三大应用场景看我国智慧城市建设现状...
- java 文件读取 进度_读取文本文件时如何使用Java进度栏?
- C++多小球非对心弹性碰撞(HGE引擎)
- wxWidgets:wxSlider类用法
- 在Idea中测试各JVM语言的交互性
- 链表之删除单链表倒数第K个节点
- 【转】magento性能优化的教程(非常详细)
- stm32F051系列 单片机引脚定时器输出pwm波形控制风扇转速
- [CodeForces332E]Binary Key
- ELK学习总结(3-2)elk的过滤查询
- 架构一个可承受千万级访问量的动态扩展CMS
- 5G火车站来了!上海虹桥火车站5G网络建设正式启动...
- 华为网络配置(DHCP)
- matlab自带的优化工具箱,MATLAB 自带优化工具箱(optimization Tool)之遗传算法简述...
- flutter 相机加入mask(遮罩层)
- JavaScript 验证码制作
- Redis(2)数据结构
- UC伯克利提出AIGC图像编辑新利器InstructPix2Pix,AI模型P图更加精细
- 不同操作系统计算机传输文件(scp命令)
- Mac 电脑四大类生产力软件,你还缺少哪些?
热门文章
- slf4j的简单用法以及与log4j的区别
- error PRJ0003 : 生成“cl.exe”时出错 解决方案
- python对json的相关操作
- Taro+react开发(61) 一条虚线
- 前端学习(3313):redux的基本操作
- 前端学习(3285):立即执行函数四
- 前端学习(3022):vue+element今日头条管理-首页layont布局
- [html] HTML5中的article和section有什么区别?
- 前端学习(2881):初始化dom和数据化线程池
- 前端学习(2814):小程序学习之建立第一个项目