類的本質

1.當程序啓動時,就會加載項目中所有的類和分類,而且加載後會調用每個類和分類的+load方法。只會調用一次。

 2.當第一次使用某個類時,就會調用當前類的+initialize方法
 3.先加載父類,再加載子類(先調用父類的+load方法,再調用子類的+load方法)

   先初始化父類,再初始化子類(先調用父類的+initialize方法,再調用子類的+initialize方法)

類本身也是對象,是個Class類型的對象,簡稱類對象

void test()
{
    // 利用Person這個類創建了2個Person類型的對象
    Person *p = [[Person alloc] init];

    // 獲取內存中的類對象
    Class c = [p class]; // 中括號裏面的class不是類型,而是一個方法 -(Class)class
    
	// 此時的 c 等同於Person 類
    // c就可以創建對象了
    c *p2 = [[c alloc]init];
}


#import <Foundation/Foundation.h>

@interface Person : NSObject
@property int age;

+ (void)test;

@end


#import "Person.h"

@implementation Person
+ (void)test
{
    NSLog(@"調用了test方法");
}


// 當程序啓動的時候,就會加載一次項目中所有的類。類加載完畢後就會調用+load方法
+ (void)load
{
    NSLog(@"Person---load");
}

// 當第一次使用這個類的時候,就會調用一次+initialize方法
+ (void)initialize
{
    NSLog(@"Person-initialize");
}

@end



發佈了59 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章