NSInvocation

在 iOS中可以直接调用某个对象的消息方式有三种:
一种是[self xxxxxxx];直接对象调用
另一种是 performSelector:withObject;
再一种就是 NSInvocation。比较复杂,容易出错

NSMethodSignature  *signature = [object instanceMethodSignatureForSelector:@selector(run:)];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
invocation.target = self;
//注意:这里的方法名一定要与方法签名类中的方法一致
invocation.selector = @selector(run:);
NSString *way = @"byCar";
//这里的Index要从2开始,以为0跟1已经被占据了,分别是self(target),selector(_cmd)
[invocation setArgument:&way atIndex:2];
//3、调用invoke方法
[invocation invoke];
- (void)run:(NSString *)method{
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一. 官网的理论 1. Timer必须知道的某些事 看了下Timer的官方解释,发现里面包含了某些我们必须知道的事...
    金风细细阅读 1,063评论 0 1
  • 在 iOS中可以直接调用 某个对象的消息 方式有2种 performSelector:withObject: NS...
    winning_阅读 3,984评论 1 4
  • 小知识: 在 iOS中可以直接调用某个对象的消息方式有两种:一种是performSelector:withObje...
    圣僧留步阅读 1,379评论 0 0
  • 日前,开始大量的思考自己的未来,可是发现,走到现在,自己真的毫无所有,没有特殊的才能,没有可以让自己自信的作品,而...
    Zensunshine阅读 187评论 0 1
  • 拿到这本书的时候,我就给自己设定了目的。 就是如何才能在教育教学以及自我思考中提出更有价值,更触及本质核心的问题。...
    大雄老师will阅读 381评论 2 3