美文网首页
initialize、load和init执行顺序

initialize、load和init执行顺序

作者: lltree | 来源:发表于2016-08-31 15:04 被阅读132次
    int main(int argc, char * argv[]) {
         NSLog(@"%s:1",__func__);//第一个监测点
        
        @autoreleasepool {
             NSLog(@"%s:2",__func__);//第二个监测点
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
    }
    
    #import "Person.h"
    
    @implementation Person
    
    +(void)load{
        NSLog(@"%s",__func__);
    }
    
    +(void)initialize{
        NSLog(@"%s",__func__);
    }
    -(instancetype )init{
        if (self = [super init]) {
           NSLog(@"%s",__func__); 
        }
        return self;
    }
    
    @end
    

    执行代码

        Person *person1 = [[Person alloc] init];
        self.person1  = person1;
        Person *person2 = [[Person alloc] init];
        self.person2  = person2;
    

    执行结果:
    [1163:402998] +[Person load]
    [1163:402998] main:1
    [1163:402998] main:2
    [1163:402998] +[Person initialize]
    [1163:402998] -[Person init]
    [1163:402998] -[Person init]

    结果说明:

    load方法 在程序启动前初始化执行一次,且只执行一次
    initialize方法 在init前初始化执行一次,且只执行一次
    init 为实例方法显而易见最后执行

    相关文章

      网友评论

          本文标题:initialize、load和init执行顺序

          本文链接:https://www.haomeiwen.com/subject/fbnqettx.html