欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS开发 Runtime 学习笔记

程序员文章站 2022-05-04 10:58:47
1.给一个类添加方法 类b 类a 两个类 b.m -(void)viewdidload{ [super viewdidload]; bool issuccess = class_addmethod(...

1.给一个类添加方法

类b 类a 两个类

b.m

-(void)viewdidload{

[super viewdidload];

bool issuccess = class_addmethod([a class],@selector(cusmyaddmethod),(imp)cusimp,"v@:");

if(issuccess){

[a performselector:@selector(cusmyaddmethod) withobject:nil];

}

}

//不要忘了实现(imp)cusimp

-(void)cusimp(id self,sel _cmd){

nslog(@"添加成功啦!");

}

2.替换给定方法的实现

在1 当中已经给a类添加了一个方法,现在把a新添加的方法换一个实现

class_replacemethod([aclass],@selector(cusmyaddmethod),(imp)cusreplaceimp,"v@:");

然后调用同样的方法

[aperformselector:@selector(cusmyaddmethod) withobject:nil];

-(void)cusimp(id self,sel _cmd){

nslog(@"替换成功啦!");

}