iOS load和initialize方法

一個(gè)類的load方法,當(dāng)類加載到OC運(yùn)行時(shí)環(huán)境(內(nèi)存)中,就會(huì)調(diào)用一次(一個(gè)類只會(huì)加載1次)

+(void)load
{
   _instance = [[self alloc] init];
   NSLog(@"load");
}

一個(gè)類的initialize方法,當(dāng)?shù)谝淮问褂眠@個(gè)類的時(shí)候才會(huì)調(diào)用

+(void)initialize
{
    NSLog(@"initialize");
}

load方法和initialize方法的區(qū)別

新建一個(gè)類DYPerson和它的子類DYStudent。

#import <Foundation/Foundation.h>

@interface DYPerson : NSObject

@end
#import "DYPerson.h"

@implementation DYPerson
+(void)load
{
    NSLog(@"DYPerson-->load");
}
+(void)initialize
{
    NSLog(@"DYPerson-->initialize");
}
@end
#import "DYPerson.h"

@interface DYStudent : DYPerson

@end
#import "DYStudent.h"

@implementation DYStudent
+(void)load
{
    NSLog(@"DYStudent-->load");
}
+(void)initialize
{
    NSLog(@"DYStudent-->initialize");
}
@end
在ViewController里面調(diào)用DYPerson *person = [[DYPerson alloc] init];則會(huì)打印
2017-05-04 00:38:36.422 AnimationArray[6544:2798211] DYPerson-->load
2017-05-04 00:38:36.426 AnimationArray[6544:2798211] DYStudent-->load
2017-05-04 00:38:36.810 AnimationArray[6544:2798211] DYPerson-->initialize

若在ViewController里面調(diào)用DYStudent *student = [DYStudent alloc] init];則會(huì)打印

2017-05-04 00:47:28.540 AnimationArray[7029:2804754] DYPerson-->load
2017-05-04 00:47:28.543 AnimationArray[7029:2804754] DYStudent-->load
2017-05-04 00:47:28.682 AnimationArray[7029:2804754] DYPerson-->initialize
2017-05-04 00:47:28.682 AnimationArray[7029:2804754] DYStudent-->initialize

因?yàn)镈YStudent是DYPerson的子類,在調(diào)用init方法的時(shí)候會(huì)調(diào)用父類(DYPerson)的init方法,進(jìn)而使用DYPerson從而打印DYPerson-->initialize。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容