美文网首页
iOS开发 runtime使用场景

iOS开发 runtime使用场景

作者: Dylan大魔王 | 来源:发表于2017-07-27 17:03 被阅读0次

    1. 消息

    #import <objc/message.h>
    #import <objc/runtime.h>
    objc_msgSend((id)[Person class], @selector(walk));
    

    2. 获取所有方法,变量

    objc_property_t * propertys = class_copyPropertyList(clazz, &outCount);
    

    3. 交换方法(AOP)

    [外部链接](http://note.youdao.com/noteshare?id=2ca674adf2eeece8fdd548e3458ef983)
    

    4. 分类添加成员

    const char key;
    //使用runtime的方法,将分类中的,属性set与get方法进行重写,解决分类中不能够声明成员变量的这个问题
    - (void)setExpand:(BOOL)expand
    {
        //<#id object#> 传进来的参数与谁关联
        //const void *key 唯一标示
        //id value 关联的内容是什么
        //objc_AssociationPolicy policy 以哪种约束方式进行关联
        objc_setAssociatedObject(self, &key, @(expand), OBJC_ASSOCIATION_ASSIGN);
    }
    - (BOOL)expand
    {
        //把包装类转换成基本数据类型后,在返回
        return [objc_getAssociatedObject(self, &key) boolValue];
    }
    - (void)spliteView
    {
        if((self.expand = !self.expand))
        {
            self.view.transform = CGAffineTransformMakeTranslation(300, 0);
        }
        else
        {
            self.view.transform = CGAffineTransformIdentity;
        }
    }
    

    5. kvc的实现

    6. 归档的实现

    相关文章

      网友评论

          本文标题:iOS开发 runtime使用场景

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