Swift给系统的类扩展属性

来源:互联网 发布:淘宝哪家毛边纸好 编辑:程序博客网 时间:2024/06/08 06:18

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)        }    }}
1 0