Swift版的MJExtension,运行时、反射与一键字典模型互转:MJExtension-Swift

jopen 9年前

1.这个框架是做什么的?

.这个框架可以理解为MJExtension的Swift版本,主要是实现类反射,并在实现反射功能的基础上实现字典-模型一键互转!

MJExtension(OC): https://github.com/CoderMJLee/MJExtension

2.这个框架是对MJExtension的纯Swift翻译吗?

.不是的,虽然两者功能一致,但底层完全不一样。在反射这块上基本代码无任何相同点,只是最终功能效果一致。在字典-模型一键互转这点上,思路是一致的,都是站在反射功能上实现。

3.Swift中有Runtime吗?

.OC中的Runtime在Swift中经过我多次测试,发现是可以用的(但结果比较稀奇古怪),不过Swift底层发动比较大,而且本身Swift已经不主张Runtime运行时机制,在Swift中是叫Reflect反射,基本可以认为Runtime已经不好用了。

4.框架为什么要命名为CFRuntime?

.CF是Charlin Feng的缩写,我知道Swift有全名空间不需要前缀,但由于OC历史原因,暂时还没改过来这个习惯哈,Runtime主要是我非常这个OC这个特性,就算Swift叫Reflect,但我个人仍想延续经典。

5.是否支持Swfit中的结构体?

.不支持,基于以下两点原因:结构体主要用于数据结构,是值类型,大型数据使用引用类型的类更好。从继承的角度来说,继承自NSObject,就已经说明问题。

6.框架是如何写出来的?

.这个问题比较综合了,因为我公司正式项目已经全部Swift化,但个人对MJExtension依赖太深,同时写了大量延伸框架,对这套框架需求迫切!最近也在研究Reflect,在参考了国外大量资料和别人的作品,综合MJExtension的理念,从昨天晚上(2015.07.10 19点)开始连续工作20多个小时写出了这套框架,力求API与MJExtension保持高度一致,只要你会用MJExtension,你会马上上手CFRuntime!