09-Objective-C特有语法:万能指针id及构造方法

1.万能指针id

 1.简介:

  • 万能指针能指向任何OC对象,相当于NSObject *
  • id类型的定义
typedef struct objc_object{
    Class isa;     // 类类型的指针
}*id;

 2.使用:

  id p = [Person new];  // 注意id 后面不要加  *   号

 3.局限性:

调用一个不存在的方法,编译器会马上报错


2.构造方法

 1.含义:

  构造方法:用来初始化对象的方法,是一个对象方法,- 开头

 2.对象创建原理

     new的拆分两部曲:

  • 分配内存(+ alloc):  Person *p1 = [Person alloc];  // 调用类方法alloc分配内存
  • 初始化(- init):Person *p2 = [p1 init];      // 调用init方法进行初始化

  合在一起就是: Person *p2 = [[Person alloc] init];  

 3.init构造方法的重写

  1.作用:为例创建对象出来,就初始化一些成员变量,成员变量就有默认值

  2.init重写规则:

- (id)init
{
    // 1.一定要调用super的init方法:初始化父类中声明的一些成员变量和其他属性
    self = [super init]; // 当前对象 self
    
    // 2.如果对象初始化成功,就可以进行接下来的初始化
    if (self != nil)  // 即初始化成功
    { 
        _age = 10;    
    }
    // 3.返回一个已经初始化完毕的对象
    return self;
}

3.自定义构造方法

  • 需求和重写init方法差不多
  • 规范:

   1.一定是对象方法,一定以 - 开头

   2.返回值一般是id类型

   3.方法名一般以initWith开头

   4.如果父类有构造方法,一定要调用super的initWith方法 

 

 

原文地址:https://www.cnblogs.com/lszwhb/p/3696582.html