为UIViewController添加Delay功能

UIViewController有一个特性, 那就是loadview未执行之前, 就无法使用那些view. 这给代码设计很多坑, 有一些操作, 必须要在界面完全load之后, 才能执行. 但是, 一些设计必须要让界面事先进行配置, 那就要做一个存储设计, 先将配置写入存储, 然后等待viewdidload的时候, 再载入配置. 这样的话, ui界面配置功能就要制作两套, 一套是纯粹写入配置, 但是不设置到具体的view, 一套是如果view已经存在, 则是直接的写入配置并且执行.
比如
屏幕快照 2016-07-11 上午10.54.16

这是一个非常简单的操作, 用户设置text的时候, 会更改testLabel中的数据. 用swift的didSet来实现, 看起来非常的便利.
在外部, 可以这样使用.
屏幕快照 2016-07-11 上午10.54.45

但是, 这样做显然会产生错误, 因为这个时候, testLabel并未初始化, 强行写入text, 直接产生内存错误.

屏幕快照 2016-07-11 上午11.08.10

为了解决这个问题, 我们可以实现一个简单的delay封装

屏幕快照 2016-07-11 上午10.55.05

这个封装的逻辑非常简单, 就是在view未载入的时候, 将ui配置存入CLDelay结构, 等到view载入的时候, 再进行载入. 代码的形式如下:

屏幕快照 2016-07-11 上午11.22.41

之后, 就可以尽情的使用统一的一套组织结构来书写代码了. 下面的这种写法, 也就不会再报内存错误.

屏幕快照 2016-07-11 上午10.54.16

Test项目下载地址:

https://github.com/wangyuanou/Delay

发表评论

电子邮件地址不会被公开。 必填项已用*标注