搜索
您的当前位置:首页正文

RunTime使用

来源:哗拓教育

关于runtime,感觉也是很牛逼哄哄的一个东西。也经常听很多大神怎样把runtime用的很灵活。

这篇是我自己在项目中的一个需求,需要用到runtime来解决。现在分享给大家。

需求大概是这样

图片在加载过程中,有一个菊花的加载动画。还有一张占位图。加载完成后,菊花消失,把获取的图片换上去。

SDImage对图片的封装已经是很不错,我是基于SD做的一个小修改。

代码如下

我个人理解可能有误:

1、先根据定义的静态变量 loadingIndicator 这个字段? 去动态得到indicator这个对象。objc_getAssociatedObject(self, &loadingIndicator)

2、如果获取到时空的,说明没有这个loadingIndicator字段没有绑定indicator这个对象。则创建一个indicator
对象并且绑定在loadingIndicator字段上

objc_setAssociatedObject(self, &loadingIndicator, indicator, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

3、这时候开始菊花转图,等到SDimage把图片获取到,执行block回调的时候,根据loadingIndicator字段
去查找之前绑定的indicator对象,然后停止菊花转图并且隐藏。

UIActivityIndicatorView* indicator = objc_getAssociatedObject(wself, &loadingIndicator);

总结:runtime是所谓的运行时机制,就是执行到某个地方,再去动态加载以前绑定的某个对象。可以在任何时刻,任何地方,去动态获取这个对象。


Top