initialize和load

/**load
 *  当类加载到OC运行环境中(内存),就会调用一次
 */

/**initialize
 *  当第一次使用这个类的时候才会调用
 */
#import "Person.h"
@implementation Person

+ (void)load
{
    NSLog(@"------------person load--------------");
}
+ (void)initialize
{
    NSLog(@"------------person initialize--------------");
}

#import "Child.h"
@implementation Child

+ (void)load
{
    NSLog(@"------------Child load--------------");
}

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

#import "ViewController.h"
#import "Person.h"
#import "Child.h"
@interface ViewController ()
@end
@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //Person *p = [[Person alloc] init];
    Child *c = [[Child alloc] init];
    
}
输出结果
2015-07-19 17:05:59.735 test[27283:1314612] ------------person load--------------
2015-07-19 17:05:59.739 test[27283:1314612] ------------Child load--------------
2015-07-19 17:05:59.928 test[27283:1314612] ------------person initialize--------------
2015-07-19 17:13:05.182 test[27396:1319499] ------------Child initialize--------------
时间: 2025-01-17 04:39:22

initialize和load的相关文章

iOS - + initialize 与 +load

Objective-C 有两个神奇的方法:+load 和 +initialize,这两个方法在类被使用时会自动调用.但是两个方法的不同点会导致应用层面上性能的显著差异. 一.+ initialize 方法和+load 调用时机 首先说一下 + initialize 方法:苹果官方对这个方法有这样的一段描述:这个方法会在 第一次初始化这个类之前 被调用,我们用它来初始化静态变量. load 方法会在加载类的时候就被调用,也就是 ios 应用启动的时候,就会加载所有的类,就会调用每个类的 + loa

iOS-方法之+ initialize 与 +load(转载)

Objective-C 有两个神奇的方法:+load 和 +initialize,这两个方法在类被使用时会自动调用.但是两个方法的不同点会导致应用层面上性能的显著差异. 一.+ initialize 方法和+load 调用时机 首先说一下 + initialize 方法:苹果官方对这个方法有这样的一段描述:这个方法会在 第一次初始化这个类之前 被调用,我们用它来初始化静态变量. load 方法会在加载类的时候就被调用,也就是 ios 应用启动的时候,就会加载所有的类,就会调用每个类的 + loa

Objective-C中的+initialize和+load

写在前面 近几天花了一些时间了解了一下Objective-C runtime相关的东西,其中涉及到了+load方法,譬如method swizzling通常在category的+load方法中完成.之前对initializer和load的使用就比较疑惑,但一直没有详细去对比了解,以此为契机,集各方资源,分析一下吧! 关于了解+initialize和+load,个人感觉参考官方文档<NSObject Class Reference>就够了. +initialize 关于+initialize方法

[IOS] initialize VS load 大战 3k回合。。

这几天又仔细看了下公司的SDK,对之前用的 load .initialize 又模糊起来了,然后就... YY之后还是要干点活搞点正事呀 ~  T_T ~ +(void)initialize .+(void)load 是NSObject 的两个类方法, NSObject 又作为强大的 root 类, 为其他类提供了一系列的生命周期.线程.内省.运行时.归档等方法. 作为 Root 类也已经 很能干了. 那有啥区别,又该怎么用呢? 1.load 是只要类所在文件被引用就会被调用,而 initial

iOS中的initialize与load两个类方法简单理解

如果你在一个UIViewController中重写了这两个类方法,那么你会在在这个控制器中发现一下现象: 1,相同之处: (1)这两个类方法在init之前就调用了 (2)在整个应用app中无论你用到这个类多少次,这两个类方法均只会被调用一次 2,不同之处: (1)load是在initialize之前被调用 (2)更特别的是,如果你没有用到你重写的这个控制器.那你重写的load类方法也会调用.换句话说,这个load方法是在didFinishLaunchingWithOptions方法之前就被调用了

IOS杂笔- 7(类方法load与initialize的区别 浅析)

在介绍两种类方法之前,NSObject Class Reference里对这两个方法说明: +(void)initialize The runtime sends initialize to each class in a program exactly one time just before the class, or any class that inherits from it, is sent its first message from within the program. (Th

Load与initialize方法

为了讲清楚饿汉式单例模式实现需要了解一下这两个方法.它们的特别之处,在于iOS会在运行期提前并且自动调用这两个方法,而且很多对于类方法的规则(比如继承,类别(Category))都有不同的处理因为这两个方法是在程序运行一开始就被调用的方法,我们可以利用他们在类被使用前,做一些预处理工作.比如我碰到的就是让类自动将自身类名保存到一个NSDictionary中.Apple的文档就不再这里给出了,可以自己去看看. Apple的文档很清楚地说明了initialize和load的区别在于:load是只要类

Objective C类方法load和initialize的区别

它们的特别之处,在于iOS会在运行期提前并且自动调用这两个方法,而且很多对于类方法的规则(比如继承,类别(Category))都有不同的处理. 先来看看NSObject Class Reference里对这两个方法说明: +(void)initialize The runtime sends initialize to each class in a program exactly one time just before the class, or any class that inherit

iOS开发-类的加载load函数和initialize函数

简要概括 load是类加载方法,initialize是类初始化方法. 要点 不需要调用super的方法. initialize和load方法系统只调用一次,开发者可以多次调用(可以,但是不建议). 类加载到系统调用load方法,类首次使用调用initialize方法. initialize和load的方法不要添加太多逻辑,类比不要在初始化方法做太多操作. initialize中可以实现无法在编译期初始化的全局变量,load的方法中可以实现swizzling的逻辑. load的调用并不视为类的第一