运行时反射

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

源码简介:

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!

源码截图:

[[141251]]

源码片段:

  1. class Person: NSObject,Printable { 
  2.  
  3.         //String 定义为可选 
  4.         var name: NSString? 
  5.  
  6.         //Int、CGFloat、Float、Double、Bool 一定不能定义为可选 
  7.         var age: Int = 0 
  8.         var age2: NSInteger = 0 
  9.  
  10.         var weight: Float = 0 
  11.  
  12.         var weight2: CGFloat = 0 
  13.  
  14.         var money: Double = 0 
  15.  
  16.         var isLikeStudy: Bool = false 
  17.  
  18.         var cat: Cat = Cat() 
  19.  
  20.         override var description: String { 
  21.             return "name=\(name),age=\(age),age2=\(age2),weight=\(weight),weight2=\(weight2),money=\(money),isLikeStudy=\(isLikeStudy), \n\n cat=\(cat)" 
  22.         } 
  23.  
  24.     } 

下载地址:http://down.51cto.com/data/2069809

 

责任编辑:倪明
相关推荐

2024-03-21 09:15:58

JS运行的JavaScrip

2021-09-11 15:38:23

容器运行镜像开放

2019-07-12 09:30:12

DashboardDockerDNS

2023-11-16 12:35:00

Java程序

2024-03-20 10:46:00

云原生容器

2020-12-07 13:31:43

GoMutex开发者

2013-11-26 16:49:55

Android开发运行时KitKat

2021-08-18 08:32:09

代码运行时间示波器

2023-07-28 10:42:43

2023-01-03 09:10:21

2022-01-19 08:50:53

设备树Linux文件系统

2023-08-29 08:20:35

Kubernete跨云容器

2021-08-27 00:21:19

JSJust源码

2023-02-12 12:00:57

2022-12-30 08:08:30

2020-04-21 15:20:12

微服务架构实践

2013-11-08 11:18:44

GoogleARTDalvik

2023-08-27 21:07:02

2021-08-13 08:15:23

JVM 虚拟机Java

2021-10-22 00:09:16

Kubernetes容器接口
点赞
收藏

51CTO技术栈公众号