runtime之动态添加方法的补充

前言

  • 1, 上一章简单讲述了runtime动态添加方法,但是都是没有参数的方法,下面我们学习一下带参数的方法.

runtime动态添加方法的补充

  • 应用场景 : 微博的会员机制
在ViewController.m文件中
#import "ViewController.h"
#import "WGStudent.h"
#import <objc/message.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    WGStudent *student = [[WGStudent alloc] init];

    [student performSelector:@selector(study:) withObject:@"在简书上学习iOS"];

}
@end
  • 注意 : 既然是有参数,那么冒号一定要记得写
在WGStudent.m文件中

#import "WGStudent.h"
#import <objc/message.h>

@implementation WGStudent

// 返回值Void-> V id -> @ SEL -> : NSString -> @
// v@:@
void study(id self, SEL _cmd, NSString *jianshu)
{

    NSLog(@"Alex%@",jianshu);

}

+ (BOOL)resolveInstanceMethod:(SEL)sel
{
    if (sel == NSSelectorFromString(@"study:")) {

        class_addMethod(self, sel, (IMP)study, "v@:@");

        return YES;
    }

  return [super resolveInstanceMethod:sel];
}

@end
  • 注意 : type是如何书写的(直接去查阅官方文档)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,403评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,958评论 19 139
  • 前言 Runtime是iOS开发者进阶必须学习的一个知识点。网上关于Runtime 有许多介绍,有深入有简单介绍,...
    雨田_Toping阅读 1,599评论 1 1
  • 最近实验室养了一只猫,二三十人像待自己的孩子一样待他!集资为他买了猫舍、猫粮、餐具等!一周给他洗一次澡,各种待遇简...
    Babyzpj阅读 194评论 0 0
  • 晚上刷朋友圈,看到一个朋友发了条心情:XXX,你在哪,我需要你的肩膀。XXX是我的全名,配图是我和她的合照,在毕业...
    村boy大新阅读 327评论 0 0