__attribute__((constructor))

2022-08-10  本文已影响0人  笑破天

该函数会在+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

上一篇下一篇

猜你喜欢

热点阅读