【多线程-第四天-自己模拟SDWebImage的下载图片功能-联合对象 Objective-C语言】

一、刚才我们说了,属性里边没有封装对应的成员变量

通知

1.分类中,属性内部没有封装成员变量,所以这个位置,没办法去返回值,这个位置,也没有办法去记录值,

于是,我们要想一个特殊的办法,什么特殊的办法呢,好,那我们这块儿要用到一个关联对象,这是运行时,RunTime,里面提供的内容,

所以,我们先把这个关联对象,怎么去用的,我们来演示一下,我们先新建一个项目,

Name:06-关联对象

通知

好,我把刚刚那件事情模拟一下,我在这儿,增加一个分类,分类,就是UIImageView,Name:MyView,

通知

好,我增加这么一个分类,现在,我给分类里边去增加一个属性,

@property(nonatomic,copy)NSString *urlString;

通知

我增加这么一个属性,刚刚我们演示过了,我增加完这么一个属性,我必须去重写get和set,

通知

好,那分类中是不能去写成员变量的,现在,我们要去存储一个值,还要去获取这个值,我们必须得想某种特殊的方案,什么特殊的方案,我们要用到运行时,这是比较底层的东西,我们先要导入一个头文件,叫做objc/runtime.h,

#import < objc/runtime.h>

通知

这是运行的时候,运行时就是,运行的时候,做的事情,在程序运行阶段,处理的事情,好,那运行时能干什么,它是对我们来说比较复杂的东西,啊,

1)// 1 可以在运行期间给某个类增加属性

通知

以前的时候,我们给某个类写属性,是不是都在开发阶段写的,其实是编译的时候做的事情吧,编译的时候,我们就直接给这个类写上这个属性了,天生就有,那是编译的时候增加的一个属性,而我们runtime呢,我们可以在整个程序运行的时候,去做这件事情,现在我们要用到这么一个事情了,这是它可以解决的第一个问题,

2)// 2 可以在运行期间获取某个对象的所有属性名称

获取属性名称,干什么,我可以给这些属性去赋值,我可以把字典中的键,跟这个属性名称对应的这个键,它的值取出来,赋给这个属性,这块儿的话,我们将来会做的,它有什么具体的用途,其实是在做更通用的代码儿的时候,写第三方框架的时候,可以用到这么一个功能,

3)// 3 交换方法

通知

什么是交换方法,A方法要执行一段儿代码吧,B方法要执行另一段儿代码,我们可以通过运行时,让A和B交换,就跟变性一样,哎,类似啊,

有什么用呢,比如说,将来我们要做网络开发,我们在做网络开发的时候,网速比较慢的情况下,是不是要提示一个不停旋转的那么一个东西,菊花,最上边,屏幕的电池栏旁边,会有一个不停旋转的菊花,

通知

如果网速慢的话,这个位置,会有一个旋转的菊花,这个是怎么来的,这个是需要我们自己写代码的,虽然代码很简单,但是也是需要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值