该函数会在+load之后main之前自动执行。数字越小优先级越高,1 ~ 100 为系统保留。
经测试destructor是在exit之后自动调用(main里面return EXIT_SUCCESS、手动调用exit()、上滑kill应用这三种都会调用,abort()不会)
int main(int argc, char * argv[]) {
NSLog(@"---AttributeTest--%s",__func__);
...
// return UIApplicationMain(argc, argv, nil, appDelegateClassName);
return EXIT_SUCCESS;
}
static __attribute__((constructor(101))) void before1()
{
NSLog(@"---AttributeTest--%s",__func__);
}
static __attribute__((constructor(102))) void before2()
{
NSLog(@"---AttributeTest--%s",__func__);
}
static __attribute__((destructor(101))) void after1()
{
NSLog(@"---AttributeTest--%s",__func__);
}
static __attribute__((destructor(102))) void after2()
{
NSLog(@"---AttributeTest--%s",__func__);
}
参考:
__attribute__详解及应用
gcc官方手册-Declaring Attributes of Functions
网友评论