【发布时间】:2019-05-27 05:06:43
【问题描述】:
假设我们有两个类:
@interface First : NSObject
@end
@interface Second : NSObject
@end
@implementation First
+(void)load
{
NSLog(@"This must be called first");
}
@end
@implementation Second
+(void)load
{
NSLog(@"And this must be called second");
}
@end
我们在每个类中都有+load 方法。如果我们运行这段代码,This must be called first 将是第一个,And this must be called second 将是第二个。
什么决定了这些类的+load 方法的调用顺序?在我的实验中,如果我在第一类的@implementation 之前移动第二类的@implementation - 首先打印And this must be called second,然后打印This must be called first。这是否意味着+load 订单仅取决于源代码中的订单?
在我的真实案例中,我使用自定义 +load 预编译了框架(在 main() 之前调用了一些代码,我看到了其中的日志),我需要在此代码之前执行我的代码(据我所知 - 我可以放到+load,但是不知道怎么改顺序)。或者我可以使用其他技术在框架代码之前调用我的代码吗?
【问题讨论】:
标签: objective-c runtime objective-c-runtime