OC的类别和扩展一般用来给类扩展方法,但有时我们需要给系统的类加一个额外的属性,这需要用到runtime机制。
Runtime是一套底层的C语言API(包含强大的C语言数据类型和函数)OC代码都是基于Runtime实现的,即编写的OC代码最终都会转成Runtime的代码
Runtime的作用:
1、获取类的私有变量
2、动态产生类,成员变量和方法
3、动态修改类,成员变量和方法
4、对换两个方法的实现(swizzle)
同样,在Swift中使用extension也可以为系统的类扩展属性:
private var key: Void?
extension UIViewController {
@IBInspectable var laxTabBarController: LAXTabBarController? {
get {
return objc_getAssociatedObject(self, &key) as? LAXTabBarController
}
set(newValue) {
objc_setAssociatedObject(self, &key, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
}
声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。