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(@"替换成功啦!");
}