initialize方法和init區別詳解
阿新 • • 發佈:2019-02-12
原創帖子,轉載請註明出處:http://blog.csdn.net/sbvfhp/article/details/47857851
1、定義Father類
// // Father.m // // Created by 李建 on 15/8/22. // Copyright (c) 2015年 李建. All rights reserved. // #import "Father.h" @implementation Father +(void)initialize { NSLog(@"Father中的 initialize 方法執行"); } -(Father *)init { NSLog(@"Father中的 init 方法執行"); return [super init]; } @end
例項化後執行效果如下圖:
上圖可以看出,Father例項化三次,initialize方法執行一次,init方法會被執行三次
2、我們定義Son類,繼承Father類
//
// Son.h
//
// Created by 李建 on 15/8/22.
// Copyright (c) 2015年 李建. All rights reserved.
//
#import "Father.h"
@interface Son : Father
@end
例項化後執行效果如下:
從以上圖中可以看出,
1>Father類例項化3次,initialize執行一次,init執行3次
2>Son繼承自Father,當Son例項化一次的時候,其它父類中的initialize執行一次,init方法執行一次
3、我們針對Father類中的列印資訊做一個調整
接下來我們再看看執行效果
initialize不是init
在程式執行過程中,它會在你程式中每個類呼叫一次initialize。這個呼叫的時間發生在你的類接收到訊息之前,但是在它的父類接收到initialize之後。