使用runtime关联对象

作者: Sunnyyangzx | 来源:发表于2017-08-02 17:41 被阅读23次

一、添加属性

在使用类别时可以直接添加方法,不能直接添加属性,但是可以利用runtime中关联对象的方法添加属性。主要的两个方法:

1、objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)此方法使用key做标识设置关联对象,参数解释如下:

id object关联对象;const void * key获取被关联者的索引key;

id value被关联者;

objc_AssociationPolicy policy关联时采用的协议,根据需求设置不同的协议,可以直接点进去查看,有retain,copy,assgin等类型。

2、objc_getAssociatedObject(id object, const void *key)此方法根据key获取关联对象

id object关联对象;const void * key获取被关联者的索引key;

方法介绍完,下面实例。如果创建了一个UIViewController的分类,想要在里面添加设置placeHolder占位图view,但是VC没有这个属性,我们就可以使用runtime通过关联对象的方式实现。

实例

如图,第一和第二个方法通过ZYPlaceHolderView这个key关联添加的属性。第三和第四个方法通过对属性自动生成set和get方法而实现。

这样可以在VC内直接使用self.placeHolderView和self.index这两个属性。

二、关联对象

关联block,为alertVIew添加block点击事件

显示alert时,把代理的点击事件绑定到关联的block上面,这样以block的形式处理点击事件。

相关文章

  • 使用runtime关联对象

    一、添加属性 在使用类别时可以直接添加方法,不能直接添加属性,但是可以利用runtime中关联对象的方法添加属性。...

  • NSRuntime使用篇

    使用总结runtime开源代码 对象的关联: 设置关联值 void objc_setAssociatedObjec...

  • 为什么使用Runtime又可以添加属性?

    使用Runtime技术中的关联对象可以为类别添加属性。其原因是:关联对象都由AssociationsManager...

  • Runtime 关联对象的使用

    现在你准备用一个系统的类,但是系统的类并不能满足你的需求,你需要额外添加一个属性。 这种情况的一般解决办法就是继承...

  • Objective-C Runtime: 变量和属性

    本文只是整理Runtime中,成员变量、属性、关联对象、方法交换使用实例。不会很细致的讲解Runtime的内容,如...

  • iOS Runtime面试题(使用runtime Associa

    使用runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么? 无论在MRC下还是...

  • ios运行时一些方法说明

    一. 关联对象主要函数: 基本说明:关联对象就是runTime界的NSMultableDictionary voi...

  • Runtime - 关联对象

    马上就要开始新的项目,这个礼拜抽空来写一篇博客。于是就写一个比较贴近大家工作开发的runtime其中一个用法吧。一...

  • 关联对象底层结构

    关联对象的方法 runtime给我们提供了三个关于关联对象的方法,如下。点击查看如何添加关联对象[https://...

  • Runtime 关联对象, 可在分类中添加属性

    Runtime 关联对象, 可在分类中添加属性 关联 API 如下 设置关联值 获取关联值 取消关联 关联策略

网友评论

    本文标题:使用runtime关联对象

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