首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    OC - load 和 initialize

    2.1 initialize 方法的调用 ① 调用时刻:+initialize方法会在类第一次接收到消息时调用。...如果子类没有实现+initialize方法,会调用父类的+initialize,所以父类的+initialize方法可能会被调用多次,但不代表父类初始化多次,每个类只会初始化一次。...方法会在类第一次接收到消息时调用; ② 先调用父类的+initialize,再调用子类的+initialize; ③ 调用了分类的+initialize,没有调用宿主类的+initialize。...cls 发送一条 initialize 消息((void(*)(Class, SEL))objc_msgSend)(cls, SEL_initialize) // 所以 +initialize...如果子类没有实现+initialize方法,会调用父类的+initialize,所以父类的+initialize方法可能会被调用多次,但不代表父类初始化多次,每个类只会初始化一次。

    1.4K10

    iOS-load和initialize方法

    在首次使用类时,会生成类对象,该方法在此时调用,initialize其实就是一个懒加载方法 如果两个类是继承关系,会先调用父类,再调用子类 如果子类没有实现initialize,则会继承父类的initialize...,在initialize调用时,运行环境基本健全(在main函数之后,我们要保证在load方法中没有使用该类,不然initialize就没有该优势),所以此时我们可以做更多的操作 上面原理讲完了,下面再写一个...方法调用 @implementation Test + (void)initialize { NSLog(@"initialize Test"); } @end @implementation...Test1 + (void)initialize { NSLog(@"initialize Test1"); } @end @implementation ViewController -...Test 从输出可以看出上面说的initialize的3个特性

    92810

    php _initialize()与__construct()的区别

    _initialize()方法是在任何方法执行之前,都要执行的,当然也包括 __construct构造函数。...也就是说如果存在_initialize()函数,调用对象的任何方法都会导致_initialize()函数的自动调用, 而__construct()构造函数仅仅在创建对象的时候调用一次,跟其它方法调用没有关系...__construct这里是双划线,而_initialize()函数是单划线 如果父子类均有_initialize()函数,则子类覆盖了父类的,如果子类没有而父类有,则子类继承父类的。...在调用子类对象的_initialize()时,也不会导致自动调用父类的_initialize() 实际编写子类的构造函数时,一般都要加上父类构造函数的主动调用parent::__construct(),

    61310

    tp _initialize() 区别 __construct()「建议收藏」

    • _initialize()方法是在任何方法执行之前,都要执行的,当然也包括_ _construct构造函数。...也就是说如果存在_initialize()函数,调用对象的任何方法都会导致_initialize()函数的自动调用, 而_construct构造函数仅仅在创建对象的时候调用一次,跟其它方法调用没有关系...• _ _construct这里是双划线,而_initialize()函数是单划线 • 如果父子类均有_initialize()函数,则子类覆盖了父类的,如果子类没有而父类有,则子类继承父类的。...在调用子类对象的_initialize()时,也不会导致自动调用父类的_initialize() • 实际编写子类的构造函数时,一般都要加上父类构造函数的主动调用parent::_ _construct

    55620

    类方法load和initialize的区别

    不会直接触发initialize的调用。 +initialize +initialize 方法是在类或它的子类收到第一条消息之前被调用的,这里所指的消息包括实例方法和类方法的调用,并且只会调用一次。...要点: initialize的自然调用是在第一次主动使用当前类的时候。 在initialize方法收到调用时,运行环境基本健全。...关于继承:和load不同,即使子类不实现initialize方法,会把父类的实现继承过来调用一遍,就是会沿用父类的+initialize。...(沿用父类的方法中,self还是指子类) 父类和本类的调用:子类的+initialize将要调用时会激发父类调用的+initialize方法,所以也不需要在子类写明[super initialize]。...类别(Category) 对于+initialize,只有最后一个类别执行,本类的+initialize和前面类别的+initialize被隐藏。

    2.3K40

    thinkphp中__construct 和 _initialize的区别

    **_initialize**: – `_initialize`是ThinkPHP提供的初始化方法,它在每次执行控制器动作(action)之前自动调用。...– `_initialize`方法不需要手动调用,框架会自动处理。...当你在当前控制器中定义`_initialize`方法时,你实际上是在重写(overriding)父类中的同名方法。这意味着在当前控制器执行时,会使用子类的`_initialize`方法而不是父类的。...如果你需要在子类中保留父类的初始化行为,同时添加自己的初始化逻辑,你应该在子类的`_initialize`方法里调用`parent::_initialize()`。...方法覆盖了`ParentController`的`_initialize`,并且通过调用`parent::_initialize()`确保了父类的初始化逻辑也得以执行。

    54610

    系统框架--51:精简initialize与load的实现

    OC中,绝大多数类都继承NSObject根类,该类有俩个方法用来实现初始化操作 +(void)load +(void)initialize +(void)load 对于加入运行期系统的每个类及分类来说...load类加载其他类是不安全的 load方法不遵从继承规则,如果某个类本身没有实现load方法,那么不管各级超类是否实现load方法,系统都不会调用 load方法务必实现得精简尽量少执行操作 +(void)initialize...对于每个类来说,initialize方法会在程序首次用该类之前调用,且只调用一次 initialize方法遵从继承规则,如果某个类没有实现它,而其超类实现了,那么就会运行其超类的实现代码 initialize...方法务必实现得精简尽量少执行操作 initialize方法只应该用来设置内部数据,不应该调用其他方法 load与initialize的区别与相同点 load方法会把应用程序所有类load都执行完,才能继续其他逻辑...;initialize是用哪个类执行哪个类,且为懒加载 initialize方法在运行期由系统调用,是处于正常状态的,线程也是安全的,而运行期执行load方法时不安全的 load与initialize方法都应该实现得精简一些

    9510
    领券