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