如何处理Swift缺乏反思?

时间:2015-08-01 15:55:27

标签: ios objective-c swift design-patterns architecture

作为一名经验丰富的Objective-C开发人员,他现在正在学习Swift,我真的错过了Objective-C的一些反射和动态特性。

例如:我编写了一个JSON序列化程序,它使用KVO和Objective C内省自动映射键和值,还有像Mantle这样的开源库。

我可以将我的对象声明为NSObject子类并继续但我觉得这不是Swift的做法。

还有其他方法可以完成相同的任务,同时避免使用Swift提供的样板吗?

1 个答案:

答案 0 :(得分:3)

编辑:(2016)这个答案是自动过时的。一些建议可能仍然有用,但现在Swift是开源的,我会研究其他可能的答案。

没有像你在Swift中所描述的那样的原生KVO反射。看到: https://stackoverflow.com/a/24092370/798682

基于我们所知道的Swift编译器如何在编译时优化方法执行(与ObjC的纯运行时实现相比),它似乎不太可能很快添加。见https://stackoverflow.com/a/25438299/798682http://blog.untitledkingdom.co.uk/obj-c-vs-swift/ 有关这方面的更多信息。

尽管如此,这里有一篇关于Swift的一些KVO替代品的博客文章: http://blog.scottlogic.com/2015/02/11/swift-kvo-alternatives.html 另一个详细介绍了Swift中的一些反射功能: http://freecake.angelodipaolo.org/simple-reflection-in-swift/