美文网首页
[iOS]消息转发-基元修改

[iOS]消息转发-基元修改

作者: 汴城码农 | 来源:发表于2020-07-03 14:39 被阅读0次

工作笔记

描述:我想要做的是将调用转发给一个或另一个选择器,具体取决于它是对象还是基本类型.最终目标是我想“封装”基元,以便将它们添加到数组/字典中
/**
 * 类型对照表
 * https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html
 */
-(void)forwardInvocation:(NSInvocation *)anInvocation{
    if (anInvocation.methodSignature.numberOfArguments>2) {
        for (int i= 2; i<anInvocation.methodSignature.numberOfArguments; i++) {
            
//            void * arg;
//            [anInvocation getArgument:&arg atIndex:i];
//            //id args = (__bridge id) arg;
//            id args = (__bridge_transfer id)arg;
            
            __unsafe_unretained id argument;
            [anInvocation getArgument:&argument atIndex:2];
                        
            NSMethodSignature *signature = [anInvocation methodSignature];
            const char* argType = [signature getArgumentTypeAtIndex:i];
            const NSString *typeStr = [NSString stringWithFormat:@"%s",argType];

            if ([typeStr isEqualToString:@"q"]) { //目前所有参数都是NSString类型,如果weex传的参数类型不对,容错处理转为NSString
                NSString * argumentStr= [NSString stringWithFormat:@"%qu",argument];
                const char *cString = [argumentStr cStringUsingEncoding:NSUTF8StringEncoding];
                [anInvocation setArgument:cString atIndex:i];
            }
        }
    }
}

参考

相关文章

  • [iOS]消息转发-基元修改

    工作笔记 描述:我想要做的是将调用转发给一个或另一个选择器,具体取决于它是对象还是基本类型.最终目标是我想“封装”...

  • iOS 消息发送与转发详解

    iOS 消息发送与转发详解 iOS 消息发送与转发详解

  • iOS理解Objective-C中消息转发机制附Demo

    iOS理解Objective-C中消息转发机制附Demo iOS理解Objective-C中消息转发机制附Demo

  • runtime系列文章总结

    《iOS Runtime详解(消息机制,类元对象,缓存机制,消息转发)》《消息转发机制与Aspects源码解析》《...

  • iOS消息转发

    title: “iOS消息转发”date: 2016-03-22 13:48:38tags: 消息转发这块,我学习...

  • ios 消息转发

    ios在类中,没有定义的函数,要走消息转发流程。如果不走消息转发流程,程序会奔溃。消息转发流程分四步调用。 第一步...

  • iOS 消息转发

    有时候我们常常看到一个cash 信息,意思是这个对象不存在这个方法,你向这个对象发送消息就会crash。 我们除了...

  • iOS 消息转发

    消息转发是Objective-C运行时的一个重要特性,具体表现是当调用一个不存在的方法时,并不会立马Crash,R...

  • ios — 消息转发

    概念 首先我们需要简单了解下,什么是oc的消息以及oc中的消息转发。先看一段简单的代码 oc中调用方法就是向对象发...

  • iOS消息转发

    类对象在接收到无法解读的消息时,会出现unrecognized selector sent to instance...

网友评论

      本文标题:[iOS]消息转发-基元修改

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