美文网首页
OC 构造方法

OC 构造方法

作者: 李琪_59dc | 来源:发表于2017-09-19 23:10 被阅读0次

1. new方法实现原理

  1. 自动调用构造方法,完整的创建一个可用的对象:Person *p=[Person new];

可以把new方法拆开如下:
(1) 调用类方法+alloc分配存储空间,返回未经初始化的对象
Person* p1=[Person alloc];
(2) 调用对象方法-init进行初始化(指针类型变为空,基本类型变成0),返回对象本身
Person *p2=[p1 init];
(3) 以上两个过程整合为一句:Person *p=[[Person alloc] init];
[Person new]等价于[[Person alloc]init]

  • init方法是系统自带的,实现在NSObject类里,如果在类中重写
    -(instancetype)init,new的时候也会自动调用重写的init方法
  • 可通过重写init方法加载一些固定的必要的资源。

2. 构造方法

  • 目的:初始化一个对象时自动调用的方法,让一个对象一创建出来就拥有某些属性和值。

以init开头的构造方法都必须先用父类初始化:if ( self=[super init] );

-(instancetype)init{
    /*self 是一个指针,表示当前调用该方法的对象本身*/
    /*super是一个关键字,用来调用父类方法*/
    self=[super init];   //最基本的初始化操作
    if(self){
       //要初始化的内容
    }
    return self;  //判断父类初始化成功后,返回当前对象的地址 return self;
}
  • instancetype解析:
    • init无法确认是什么类继承了NSObject
    • instancetype前身是id,可以指向任意的对象类型;
    • id的弊端:虽然可表示所有类型,但是一个公共类型,处理不了精准的问题。
    • instancetype更加智能,init写在哪个类中,就会自动用该类名来替代instancetype,instancetype只能用在构造方法里的返回类型

例子:

@interface Person:NSObject{
    NSString* _name;
}
//为一个对象进行初始化的方法
-(instancetype)initWithName:(NSString*)name;   //显示声明
@end

@implementation Number
-(instancetype)initWithName:(NSString*)name{
    self=[super init];   //先调用父类构造方法
    if(self){                  //自定义的构造方法,进行子类内部成员变量的初始化
        _name=name;
    }
}
@end
  • 有成员变量的类需要写构造方法
  • 自定义的构造方法需要显示声明
  • 自定义构造方法一定是对象方法,-开头
  • 返回值一般是instancetype类型
  • 带参数的构造方法名必须以initWith...开头

相关文章

  • OC 构造方法

    1. new方法实现原理 自动调用构造方法,完整的创建一个可用的对象:Person *p=[Person new]...

  • 构造方法 和 类方法

    【构造方法】 在OC当中,以 init 开头的方法称为构造方法. 作用: 构造方法用于初始化成员变量的值,一般只调...

  • OC-构造方法

    一、【掌握】点语法的介绍和使用 1.点语法是编译器特性,当编译器看到对象使用点语法,会自动把点语法转换为调用set...

  • init构造方法 - OC

    init构造方法(用固定的值进行初始化) : //当子类把父类的init覆盖了,默认先执行子类的-(instan...

  • Swift 的构造器(一)

    前言 本文主要是Swift的构造器相关知识,另加少部分的OC中的init方法(还有少许Java相关的构造方法...

  • Java 构造方法

    构造方法相当于OC里面的alloc init 构造方法的设计目的就是 在创建对象的时候顺带着创建默认属性 和默认方法

  • swift Class的构造函数

    1.构造函数类似于OC中的初始化方法:init方法2.构造函数有两种:一种是指定构造器(Designated In...

  • 13 类的构造函数、析构函数和自动引用计数

    1. 构造函数 1.1 构造函数的介绍 构造函数类似于OC中的初始化方法:init方法 默认情况下创建一个类时,必...

  • swift 构造器

    构造器 使用构造器来实现构造过程,构造器可以看做是用来创建新实例的特殊方法,与OC的构造器不同,之前是先调用父类的...

  • swift基础语法(十二)——构造函数

    介绍(学过Java,C++等其他语言的应该知道构造函数) 构造函数类似于OC中的初始化方法:init方法 默认情况...

网友评论

      本文标题:OC 构造方法

      本文链接:https://www.haomeiwen.com/subject/fhzgsxtx.html