iOS 面试题~类方法load和initialize的区别

//联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪哄


一、+load:


1/方法当类或分类添加到object-c runtime时被调用

2/子类的+load方法会在它所有父类的+load方法之后执行,

3/而分类的+load方法会在它的主类的+load方法之后执行,

4.+load方法,它不遵循那套继承规则。

5.+load方法调用顺序是:SuperClass -->SubClass --> CategaryClass

6.load,是加载类的时候,这里是Constants类,就会调用。也就是说,ios应用启动的时候,就会加载所有的类,就会调用这个方法。


注意:这样有个缺点,当加载类需要很昂贵的资源,或者比较耗时的时候,可能造成不良的用户体验,或者系统的抖动(dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{});GCD可能会好点)。


二、initialize


1/是在类或者它的子类接受第一条消息前被调用;

2/是以懒加载的方式被调用的;

3/一定会在线程安全的环境中执行;

4/调用顺序是SuperClass -->SubClass

5/initialize 会在运行时仅被触发一次,如果没有向类发送消息的话,这个方法将不会被调用。这个方法的调用是线程安全的。父类会比子类先收到此消息。


谢谢!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值