zoukankan      html  css  js  c++  java
  • load vs. initialize

    这篇文章来对比一下NSObject类的两个方法,+load+initialize

    + (void)load;

    Invoked whenever a class or category is added to the Objective-C runtime; implement this method to perform class-specific behavior upon loading.

    不管一个类、类别是被动态加载或者静态链接,都会被发送load消息,但是只有新加入的类或者类别实现了这个方法,它才可以响应。

    The order of initialization is as follows:

    1. All initializers in any framework you link to.
    2. All +load methods in your image.
    3. All C++ static initializers and C/C++ __attribute__(constructer) functions in your image.
    4. All initializers in frameworks that link to you.

    注意:

    • 一个类的+load方法在他所有的父类之后调用;
    • 一个类别的+load方法,在类本身的+load之后调用。

    + (void)initialize;

    运行时在每个类或者该类的子类被首次使用时,调用该方法。父类比子类先收到该消息。

    运行时以线程安全给每个类发送initialize消息。这造成initialize会阻塞其他线程。所以,在initialize中只做必须的少量工作。

  • 相关阅读:
    JS 提交表单
    [ZJOI 2010]base 基站选址
    [ZJOI 2013]丽洁体
    [Codeforces 176B]Word Cut
    [SDOI 2013]方程
    [AtCoder agc021D]Reversed LCS
    [BZOJ 4361]isn
    [SDOI 2011]黑白棋
    [ZJOI 2010]Perm 排列计数
    [Codeforces 297E]Mystic Carvings
  • 原文地址:https://www.cnblogs.com/xjshi/p/7509835.html
Copyright © 2011-2022 走看看