OC-id、构造方法

  1. id
  1. 简介
  • 万能指针,能指向任何OC对象,相当于NSObject *
  • id类型的定义
typedef struct objc_object {

    Class isa;

} *id;
  1. 使用
// 注意:id后面不要加上*

id p = [Person new];
  1. 局限性

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

  1. 构造方法:---用来初始化对象的方法,是一个对象方法
  1. 对象创建原理
  • new的拆分两部曲
  • 分配内存(+alloc)
  • 初始化(-init)
Person *p1 = [Person alloc];

Person *p1 = [p1 init];

合成一句后:

Person *p = [[Person alloc] init];
  1. init方法的重写
  • 目的:为了让对象创建完毕后,成员变量马上就有一些默认的值
  • init方法的重写过程
  • 先初始化父类,后初始化子类
    • 先调用父类的构造方法([super init])
  1. 复制代码
    - (id)init
    {
        if (self = [super init])
    
        {
            _age = 10;
        }
        return self;
    }

自定义构造方法

  • 构造方法的一些规范
  • 返回值是id类型
  • 方法名都以init开头
  • 复制代码
    - (id)initWithAge:(int)age {
    
        if (self = [super init]) {
    
            _age = age;
        }
        return self;
    }
    复制代码

       传递多个参数进行初始化

- (id) initWithAge:(int)age andNo:(int)no;

      .h和.m文件的抽取

  • 每个类分布在不同文件中
  • 类的声明放在.h文件,类的实现放在.m文件
  • 若想使用某个类,就包含某个类的.h声明文件
原文地址:https://www.cnblogs.com/IDRI/p/4954070.html