美文网首页
反射机制

反射机制

作者: Eugene_iOS | 来源:发表于2017-06-15 11:36 被阅读9次

前言

因为Objective C是动态语言,我们可以根据这个特性做一些实例创建动态方法调用条件判断的操作。

常用方法反射的API

// SEL和字符串转换
FOUNDATION_EXPORT NSString *NSStringFromSelector(SEL aSelector);
FOUNDATION_EXPORT SEL NSSelectorFromString(NSString *aSelectorName);

// Class和字符串转换
FOUNDATION_EXPORT NSString *NSStringFromClass(Class aClass);
FOUNDATION_EXPORT Class __nullable NSClassFromString(NSString *aClassName);

// Protocol和字符串转换
FOUNDATION_EXPORT NSString *NSStringFromProtocol(Protocol *proto) NS_AVAILABLE(10_5, 2_0);
FOUNDATION_EXPORT Protocol * __nullable NSProtocolFromString(NSString *namestr) NS_AVAILABLE(10_5, 2_0);

运行时判断对象类型的方法

// 当前对象是否这个类或其子类的实例
- (BOOL)isKindOfClass:(Class)aClass;
// 当前对象是否是这个类的实例
- (BOOL)isMemberOfClass:(Class)aClass;
// 当前对象是否遵守这个协议
- (BOOL)conformsToProtocol:(Protocol *)aProtocol;
// 当前对象是否实现这个方法
- (BOOL)respondsToSelector:(SEL)aSelector;

使用

//根据字符串 运行时 创建实例对象
Class class = NSClassFromString(@"HomeViewController");
HomeViewController *vc = [[class alloc] init];
//根据字符串动态的进行方法调用
SEL selector = NSSelectorFromString(@"setupNavBar");
[vc performSelector:selector];

//运行时动态判断当前对象是否是UIView对象或其子类

if ([self isKindOfClass:NSClassFromString(@"UIView")]) {
     NSLog(@"The Current Class is UIView Class");
   }

if ([self isKindOfClass:[UIView class]]) {
      NSLog(@"The Current Class is UIView Class");
   }

相关文章

  • java反射机制

    java的反射机制 1 JAVA的反射机制是什么?反射机制能做什么?反射机制的优点与缺点2 认识 Class...

  • 反射之一

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • 反射之二

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • Java反射机制入门

    Java反射机制入门 一、什么是反射 JAVA反射机制(The JAVA reflection mechanism...

  • OC的反射机制

    目录 1 反射机制的概念 2 反射机制原理 首先还是按照惯例和大家解释下什么反射机制? 反射的概念是由Smith在...

  • 反射之三

    总结内容源自以下文章 粗浅看java反射机制 反射机制应用实践 谈谈java反射机制 Java Reflectio...

  • Java基础之反射

    Java基础之—反射(非常重要)Java中反射机制详解Java进阶之reflection(反射机制)——反射概念与...

  • 详解Java反射机制(Reflection)

    详解Java反射机制(Reflection) 反射机制的作用 JAVA反射机制是在运行状态中,对于任意一个类,都能...

  • 反射机制基础

    一、反射 1、反射机制 反射机制: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方...

  • Java获取反射的三种方法

    1.通过new对象实现反射机制 2.通过路径实现反射机制 3.通过类名实现反射机制 public class Ge...

网友评论

      本文标题:反射机制

      本文链接:https://www.haomeiwen.com/subject/kxpyqxtx.html