iOS NSIvocation的简介与使用

本文介绍如何使用NSInvocation来调用未公开的方法,包括生成方法签名、创建NSInvocation实例、设置目标对象和方法选择器、传递参数以及执行调用等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

NsInvocation 主要是为完成,调用某个对象的方法 ,进行使用的;(通常是因为这个对象的方法没有Api)


二、使用方式

Nsivlcation 的功能较为强大,可以传值多个参数;

在.m 文件中的代码



- (void)viewDidLoad {

    [super viewDidLoad];

    

    

    //NSMethodSignature 生成的签名 第一个参数传的是你要调用的类,第二个参数是在类中实现的方法(方法不在.h文件中声明 也没有关系)

    SEL seclector = NSSelectorFromString(@"changeName:withtype:");

    NSMethodSignature * signature = [ViewController instanceMethodSignatureForSelector:seclector];

    

    //创建NSInvocation 第一个参数传的是签名

    NSInvocation * vocation = [NSInvocation invocationWithMethodSignature:signature];

    

    //target传的是你想要调用的类 必须与生成签名的时候 一致

    vocation.target = self;

    

    //voation中的方法必须和签名中的方法一致

    vocation.selector = seclector;

    

  

    //参数的传递

    NSString * name = @"郭晓广";

    

    //设置参数的时候 不能从0开始,因为0已经被self占用,1已经被_cmd占用 只能从2开始

    [vocation setArgument:&name atIndex:2];

   

    //同上

    NSString * type = @" 啊啊啊啊";

    [vocation setArgument:&type atIndex:3];

    

    //只要调用invocationinvoke方法,就代表执行nsivocation对象中制定对象的指定方法

    [vocation invoke];


}

-(void)changeName:(NSString * )name withtype:(NSString*)type

{

    NSLog(@"改变名字%@%@",name,type);

}










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值