Давайте представим, что у нас есть два класса:
@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
, но я не знаю, как изменить порядок).Или, может быть, я могу вызвать свой код до кода фреймворка с помощью другой техники?