【问题标题】:How to deal with the lack of reflection in Swift?如何处理 Swift 中缺少反射的问题?
【发布时间】:2023-04-01 16:01:01
【问题描述】:

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

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

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

有没有其他方法来完成相同的任务,同时避免样板,使用 Swift 提供的东西?

【问题讨论】:

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


    【解决方案1】:

    编辑:(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/.

    【讨论】:

    • 博文讲的是 KVO .. 但我讲的是 KVC 键值编码和运行时自省。
    • 明白了。是的,我主要是说 Swift 中没有太多东西,并提供了那里的东西。希望这会很快改变。祝你好运!
    • 是的,我很感激。我对你投了赞成票,但我希望有创意的人能想出一些更可行的东西。
    猜你喜欢
    • 1970-01-01
    • 2011-03-23
    • 2014-02-26
    • 2014-05-24
    • 2021-03-27
    • 1970-01-01
    • 2019-05-25
    • 2020-01-08
    • 1970-01-01
    相关资源
    最近更新 更多