有一个Swift等价于GCC`__tribute __((构造函数))`?

时间:2015-08-06 21:10:50

标签: swift

我在使用纯Swift创建内容时遇到了麻烦。我正在尝试实现类似于NSValueTransformer的类的注册表。

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

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

1 个答案:

答案 0 :(得分:0)

如果您的类的注册表包装在一个包中,那么您可以使用bundle的主要类来查找和注册变换器。如果没有,你可以利用AppDelegate的app完成启动方法系列来完成它。

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