作为一名经验丰富的Objective-C开发人员,他现在正在学习Swift,我真的错过了Objective-C的一些反射和动态特性。
例如:我编写了一个JSON序列化程序,它使用KVO和Objective C内省自动映射键和值,还有像Mantle这样的开源库。
我可以将我的对象声明为NSObject子类并继续但我觉得这不是Swift的做法。
还有其他方法可以完成相同的任务,同时避免使用Swift提供的样板吗?
答案 0 :(得分:3)
编辑:(2016)这个答案是自动过时的。一些建议可能仍然有用,但现在Swift是开源的,我会研究其他可能的答案。
没有像你在Swift中所描述的那样的原生KVO反射。看到: https://stackoverflow.com/a/24092370/798682
基于我们所知道的Swift编译器如何在编译时优化方法执行(与ObjC的纯运行时实现相比),它似乎不太可能很快添加。见https://stackoverflow.com/a/25438299/798682和 http://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/