runtime之動態(tài)添加方法的補充

前言

  • 1, 上一章簡單講述了runtime動態(tài)添加方法,但是都是沒有參數(shù)的方法,下面我們學習一下帶參數(shù)的方法.

runtime動態(tài)添加方法的補充

  • 應用場景 : 微博的會員機制
在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
  • 注意 : 既然是有參數(shù),那么冒號一定要記得寫
在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是如何書寫的(直接去查閱官方文檔)
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,029評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 前言 Runtime是iOS開發(fā)者進階必須學習的一個知識點。網(wǎng)上關于Runtime 有許多介紹,有深入有簡單介紹,...
    雨田_Toping閱讀 1,623評論 1 1
  • 最近實驗室養(yǎng)了一只貓,二三十人像待自己的孩子一樣待他!集資為他買了貓舍、貓糧、餐具等!一周給他洗一次澡,各種待遇簡...
    Babyzpj閱讀 214評論 0 0
  • 晚上刷朋友圈,看到一個朋友發(fā)了條心情:XXX,你在哪,我需要你的肩膀。XXX是我的全名,配圖是我和她的合照,在畢業(yè)...
    村boy大新閱讀 385評論 0 0

友情鏈接更多精彩內(nèi)容