美文网首页
NSInvocation

NSInvocation

作者: 冰棍儿好烫嘴 | 来源:发表于2019-02-18 17:54 被阅读0次

iOS中调用一个函数,一般有三种方法

第一种:对象(类对象)直接调用

01-对象调用方法

第二种:performSelector方法

02-performSelector方法

performSelector方法调用的本质是使用第三种方法NSInvocation来实现方法的

performSelector方法中可传入一个活着两个参数,如果参数过多,这里没有办法传入。一般的做法是将多个参数封装成字典NSDictionary传入。但是这样的话就要多写这个封装的代码,比较麻烦。

第三种:NSInvocation调用

03-NSInvocation调用

NSInvocation方法调用过程图中已经写的很明白了,需要注意的就是设置参数的时候setArgument方法中的两个参数

第一个参数需要传入的是对应参数的指针,第二个参数需要传入的是参数在参数列表中的index。应为在iOS中每个函数都有两个默认的参数:0--id:self 1--SEL:_cmd,所以自己添加的参数一般下标从2开始

应用

这里提一个应用,供大家参考

在做项目组件化的时候大家都要使用路由,路由中传入的类名和方法名一般都是字符串,大家通过Runtime方法获取对应的类名和方法名。而参数一般是通过拼接的方式传入,然后在路由这里将参数组合成字典。然后让对应的类调用对应的方法。

在调用方法的时候一般都要做一层封装,用NSInvocation来实现方法的调用。

相关文章

  • BlocksKit A2DynamicDelegate研究

    NSInvocation @interface NSInvocation:NSObject 通过方法签名获得NSI...

  • NSInvocation如何调用block

    NSInvocation如何调用block 同步发布到博客地址NSInvocation如何调用block NSIn...

  • NSInvocation个人理解

    NSInvocation的使用: //NSInvocation;用来包装方法和对应的对象,它可以存储方法的名称,对...

  • 强大的NSInvocation

    前言 在消息转发中提到过NSInvocation这个类,这里说一下我所理解的NSInvocation。NSInvo...

  • NSInvocation使用

    NSInvocation NSInvocation是一个消息调用类,主要作用是存储和传递消息。它存储的信息包含了一...

  • void SendDelegateMessage(NSInvoc

    void SendDelegateMessage(NSInvocation *): delegate (webVi...

  • 使用 Invocation 来动态调用

    NSInvocation 可以方便的调用

  • NSInvocation

    在 iOS中可以直接调用某个对象的消息方式有三种:一种是[self xxxxxxx];直接对象调用另一种是 pe...

  • NSInvocation

    NSInvocation是命令模式的一种实现,它包含选择器、方法签名、相应的参数以及目标对象。所谓的方法签名,即方...

  • NSInvocation

    NSInvocation 在 iOS中可以直接调用某个对象的消息方式有两种 一种是performSelector:...

网友评论

      本文标题:NSInvocation

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