runtime实用

作者: DelegateChai | 来源:发表于2017-03-13 19:39 被阅读65次

首先导入<objc/message.h>头文件

runtime替换方法的:

在类的+load方法中进行,因为这个东西只会调用一次。添加功能记得调用原方法(此时原方法已经被新方法替换),类方法和实例方法的替换调用的方法是不太一样的。

runtime添加方法:

一般用调用performSelecter(),在 -(Bool)ResolveInstanceMethod:(SEL)sel{} 中可以拦截到调用的方法,在这里也可以拦截到没有实现的方法(注意重写方法需要调用 [super reloveMethod]方法),添加方法add......,注意查一下官方文档,看一下写法:
比如要添加的方法:

void eat(id self,SEL _cmd){  //这是个没有参数的添加方法

}
void eat(id self,SEL _cmd,id para){}//带一个参数的添加方法
//添加
class_addMethod(self,sel,(IMP)eat,"v@:");

class_addMethod(self,sel,(IMP)eat,"v@:@");
Runtime给类或分类添加属性:

可以给分类添加一个全局静态变量,实现他的set和get方法,但是不够好。
可以用关联方法:

//添加一个name属性
-(void)setName:(NSString *)name{  
//para1:给谁关联属性,para2:关联属性的key值,para3:关联属性的策略
  objc_setAssociatedObject(self,@"name",OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
-(NSString *)name{
objc_getAssociatedObject(self,@"name");
}

相关文章

  • runtime实用

    正常开发中runtime要说吧功能确实强大,但是用的却是很少,主要是有些用不上,有些吧,可以替代,所以就尴尬了。但...

  • runtime实用

    Runtime常见应用场景 具体应用拦截系统自带的方法调用(Method Swizzling黑魔法) 实现给分类增...

  • runtime实用

    首先导入头文件 runtime替换方法的: 在类的+load方法中进行,因为这个东...

  • objc runtime (四)动态添加属性

    在《objc runtime (二)交换方法》中我提到过runtime最实用的就是交换方法和动态添加属性两个用法。...

  • runtime实用一

    hold 调用未实现方法导致的crash的方式, 通过runtime来控制消息转发的方式来处理调用未实现方法来预防...

  • OC最实用的runtime总结,面试、工作你看我就足够了!

    OC最实用的runtime总结,面试、工作你看我就足够了! 前言runtime的资料网上有很多了,部分有些晦涩难懂...

  • runtime

    什么是runtime 1> runtime是一套底层的c语言API(包括很多强大实用的c语言类型,c语言函数);2...

  • runtime

    什么是runtime? 1> runtime是一套底层的C语言API(包含很多强大实用的C语言数据类型、C语言函数...

  • 关于runtime让你装逼的点(面试绝对有用)

    OC最实用的runtime总结 前言 runtime的资料网上有很多了,部分有些晦涩难懂,我通过自己的学习方法总结...

  • Runtime的简单使用

    Runtime简介 Runtime是一套底层的C语言API(包含了很多强大实用的C语言数据类型和C语言函数), 实...

网友评论

    本文标题:runtime实用

    本文链接:https://www.haomeiwen.com/subject/ncrduttx.html