Swift如何加载一个类

3
我们知道,在加载Objective-C类时,将调用+load方法。但是在Swift中,我们没有+load方法。
因此,我尝试进行了调查。我在call_load_methods处添加了符号断点。在Objective-C世界中,这个函数将调用所有类的+load方法。但它并没有进入这个断点。
所以我想知道如何在Swift中加载。或者你们能否给我更多关于Swift运行时或其他方面的详细信息?

1
更多细节是:Swift没有运行时。欢迎来到C++俱乐部。你想要实现什么?能具体说明一下吗? - Cy-4AH
1个回答

0
很遗憾,在Swift中实现的加载类方法从未被运行时调用,因此推荐这个做法是不可能的。相反,我们只能在第二选择之间进行选择:
1. 在initialize中实现方法混编。只要在执行时检查类型并在dispatch_once中包装混编(无论如何都应该这样做),就可以安全地完成这项工作。 2. 在应用程序委托中实现方法混编。不要通过类扩展添加方法混编,而是添加一个方法到应用程序委托中,以在调用application(_:didFinishLaunchingWithOptions:)时执行。根据您要修改的类,这可能已经足够,并且应该保证每次都会执行您的代码。 来源

我知道Swift不会调用load方法以及如何在Swift中进行Swizzling。我想要了解Swift如何加载类。例如,在Objective-C运行时中,会调用call_load_methods,然后是call_class_loadscall_category_loads。但是Swift运行时不同,我想知道它有什么不同?如何在Swift中加载类图像,Swift运行时是什么样子的? - billwang1990

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接