zoukankan      html  css  js  c++  java
  • ios initialize和init等方法

    在程序运行过程中,创建多个类对象,只会调用一次initialize  [ɪˈnɪʃəˌlaɪz] 。而创建几个类对象就会调用几次init;

    创建一个类aa,分别重写 initialize和init方法

    #import "aa.h"
    
    @implementation aa
    
    + (void)initialize{
        NSLog(@"%s",__func__);
        
    }
    
    - (instancetype)init{
        self = [super init];
        if (self) {
        NSLog(@"%s",__func__);
        }
        return self;
    }
    @end

    在viewcontrller里创建两个aa类的对象

    #import "ViewController.h"
    #import "aa.h"
    
    @interface ViewController ()
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        aa *a1 = [[aa alloc]init];
        aa *a2 = [[aa alloc]init];
    }
    @end

    打印结果是:

          

    结论:在程序运行过程中,创建多个类对象,只会调用一次initialize。而创建几个类对象就会调用几次init;

    创建一个类bb 继承自aa类

    #import "aa.h"
    
    @interface bb : aa
    
    @end

    在ViewController里创建两个bb类对象

    #import "ViewController.h"
    #import "bb.  
    @interface ViewController ()
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        bb *b1 = [[bb alloc]init];
        bb *b2 = [[bb alloc]init];
    }
    @end

    打印结果:

        

    结论:如果是子类的话,创建几次实例,initialize和init就会被调用几次

  • 相关阅读:
    小白安装使用Redis
    Mysql的Sql语句优化
    maximo入门----用户使用提要
    时不时刷刷BOSS 看看技术需求
    2019.7.10整理
    docker使用入门
    docker之windows安装&centOS安装
    HashTable学习
    Hashmap学习
    红黑树学习
  • 原文地址:https://www.cnblogs.com/jiayongqiang/p/5591686.html
Copyright © 2011-2022 走看看