Runtime

作者: LByy | 来源:发表于2017-03-01 13:24 被阅读10次

    最近时间相对充足一些,正好这时候把最近一年左右的项目笔记给整理,并依次发布出来。

    1 类别绑定属性

    runtime01.png

    问题:

    如上图所示,项目中在这个页面是个自定义cell,但是每个cell中有个Switch按钮,点击之后,需要根据当前cell的数据进行后续的一些操作。
    ps:这个应该是在开发中最经常遇到的一个小问题了,可以通过找superview的方式,一步一步找到当前Switch所在的cell,然后进行处理。
    但是这时候就可以运用runtime进行给Switch类动态添加一个属性,可以很方便的处理好。
    新建一个Switch的category文件 .h文件声明一个属性
    @property (nonatomic,strong) id indexRow;
    接着在.m文件中实现set get两个方法
    并且需要定义一个key
    static char IndexRowKey;
    - (void)setIndexRow:(id)indexRow
    { /** @param object#> 绑定的对象 一般都是self @param key#> 用于存取值 即绑定的这个对象 @param value#> 关联对象的值 这个是需要传入id类型的,若不是 需要@()转换一下 @param policy#> 关联对策 */ return objc_setAssociatedObject(self, &IndexRowKey, indexRow, OBJC_ASSOCIATION_RETAIN_NONATOMIC); }

    - (id)indexRow
    { return objc_getAssociatedObject(self, &IndexRowKey); }

    2 动态添加方法

    运用给类别绑定一个属性,在开发中,我们可以给UIView添加一个宽或高的属性,开发中就不需要多次打点.才能拿到对应的宽高值。

    相关文章

      网友评论

          本文标题:Runtime

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