文档章节

Runtime 关联对象的使用

如若初见
 如若初见
发布于 2016/03/25 22:54
字数 234
阅读 40
收藏 1

现在你准备用一个系统的类,但是系统的类并不能满足你的需求,你需要额外添加一个属性。这个时候,runtime的关联属性就发挥它的作用了。其实,你还可以把添加和获取关联对象的方法写在你需要用到这个功能的类的类别中,方便使用。

首先,引入头文件 #import<objc / runtime.h>

其次,重写getter & setter 方法


 #import<objc / runtime.h>

@implementation UIImageView (WebCache)

- (void)setCurrentUrl: (NSSting *)currentUrl {

//运行时机制来存储数据

参数的介绍:1)要被关联的对象

                      2)要被关联的key

                      3) 要被关联的value

                      4) 策略即内存的引用关系

有以下几种策略

enum {    OBJC_ASSOCIATION_ASSIGN = 0,  

              OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1,    

              OBJC_ASSOCIATION_COPY_NONATOMIC = 3,   

              OBJC_ASSOCIATION_RETAIN = 01401,    

              OBJC_ASSOCIATION_COPY = 01403 };

}

objc_setAssociatedObject(self,"abc",cuurentUrl,OBJC_ASSOCIATION_COPY);

}


- (NSSting *)cuurentUrl {

//取出cuurentUrl

参数:1)要被关联的对象

           2)要被关联的key

return objc_getAssociatedObject(self,"abc");

}


© 著作权归作者所有

如若初见
粉丝 20
博文 30
码字总数 22876
作品 0
私信 提问
iOS开发 Runtime原理及使用(最后面试题详解)

runtime简介 因为Objc是一门动态语言,所以它总是想办法把一些决定工作从编译连接推迟到运行时。也就是说只有编译器是不够的,还需要一个运行时系统 (runtime system) 来执行编译后的代码。这...

_小迷糊
2018/12/10
0
0
iOS~runtime理解

Runtime是想要做好iOS开发,或者说是真正的深刻的掌握OC这门语言所必需理解的东西。最近在学习Runtime,有自己的一些心得,整理如下, 一为 查阅方便 二为 或许能给他人一些启发, 三为 希望...

我是IT码农
2016/06/20
118
0
使用runtime让button传递多个参数

让button同时传递2个参数 我们需要通过runtime来实现这个功能,废话不多说,直接开始~~~ 首先,使用runtime我们需要导入一个头文件 然后让我们创建一个button 使用runtime,给btn附带2个参数 这样...

樱黯雨
2016/07/19
32
0
iOS runtime ~ 动态添加属性

//联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪哄 一、概念 1.runtime:动态添加属性:什么时候需要动态添加属性; 2.开发场景:给系统的类添加属性的时候,可以使用runtime动态添加属性方法; 3...

石虎132
2017/12/30
0
0
iOS进阶之runtime作用

图片来源于网络 前言 Runtime基本是用C和汇编写的,可见苹果为了动态系统的高效而作出的努力。你可以在这里下到苹果维护的开源代码。苹果和GNU各自维护一个开源的runtime版本,这两个版本之间...

DWade_Coding
2017/10/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【1015】LNMP架构二

【1015】LNMP架构二 三、PHP安装 PHP安装和LAMP安装PHP方法有差别,需要开启php-fpm服务 1、下载PHP7至/usr/local/src/ 切换目录:cd /usr/local/src 2、解压缩 tar -jxvf php-7.3.0.tar.gz...

飞翔的竹蜻蜓
36分钟前
4
0
浅谈Visitor访问者模式

一、前言 什么叫访问,如果大家学过数据结构,对于这点就很清晰了,遍历就是访问的一般形式,单独读取一个元素进行相应的处理也叫作访问,读取到想要查看的内容+对其进行处理就叫作访问,那么...

青衣霓裳
54分钟前
6
0
JS内嵌多个页面,页面之间如何更快捷的查找相关联的页面

假设parent为P页面, P页面有两个子页面,分别为B页面和C页面; B页面和C页面分别内嵌一个iframe,分别为:D页面和E页面 现在通过B页面的内嵌页面D的方法refreshEpage(eUrl)来加载内嵌页面E的内容...

文文1
55分钟前
7
0
Hibernate 5 升级后 getProperties 错误

升级到 Hibernate 5 后,提示有错误: org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Map; 完整的错误栈为: java.lang.NoSuchMethodError: org.hibernate......

honeymoose
57分钟前
6
0
mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部