【问题标题】:Is there a Swift equivalent to GCC `__attribute__((constructor))`?是否有 Swift 等效于 GCC `__attribute__((constructor))`?
【发布时间】:2015-08-06 21:10:50
【问题描述】:

我在纯 Swift 中创建东西时遇到了麻烦。我正在尝试实现类似于 NSValueTransformer 的类注册表。

在 Objective-C 中,我会确保通过在子类的 load 类方法中调用 setValueTransformer:forName: 来注册 NSValueTransformer 子类。这种方法在 Swift 中不起作用,因为运行时不会在 Swift 类上调用 load

我的下一个想法是找到__attribute__((constructor)) 的 Swift 版本,但我的搜索结果一片空白。 Swift 是否提供类似于 __attribute__((constructor)) 的东西,或者是实现这一点的唯一方法来编写调用 Swift 函数的 C 函数?

【问题讨论】:

  • 您找到解决问题的方法了吗?我也有类似的需求。提前致谢

标签: swift


【解决方案1】:

如果您的类注册表被包装在一个包中,那么您可以使用包的主体类来查找和注册转换器。如果没有,您可以使用AppDelegate 的应用程序确实完成启动方法族来完成它。

无论哪种方式,您都需要搜索所有课程并注册您想要的课程。 Objective-C 有很好的 objc_getClassList() 来完成这个,对于 Swift,我发现了一个有趣的要点,将这个函数添加到 Swift:https://gist.github.com/bnickel/410a1bdc02f12fbd9b5e

【讨论】:

    猜你喜欢
    • 2020-05-23
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 2011-07-02
    • 2014-01-28
    相关资源
    最近更新 更多