12月19号 init和class

@init 自定义

 

相当于构造方法,有的时候初始化的时候有一些默认值,还有就是页面加载数据的时机问题,防止加载了页面再填数据

声明:

  -(instancetype)initWithName:(NSString *)aName andage:(int)aAge;   //自定义的初始化方法必须以init开头

实现:

  -(instancetype)initWithName:(NSString *)aName andage:(int)aAge{

      if (self =[super init]) {       //调用父类方法init 并且判断是否初始化成功

          self.name = aName;

          self.age = aAge;

      }

      return self;

  }

调用:

  Person *hrr =[[Person alloc]initWithName:@"hrr" andage:20];

 

ps:

自定义的时候可以有三种返回类型  意义相同

  -(Person *)initWithName

  -(id)initWithName     //id相当于void

  -(instancetype)initWithName      //instancetype对象类型

 

 

 

@class

 

有一些类会相互调用

例如钥匙类中会包含锁,锁中又包含钥匙

相互#import会出错  因为一直互相引用

这时随便选择一个类

@class Key

就可以解决这个问题

表示声明的时候不导入但是在实现的时候导入

原文地址:https://www.cnblogs.com/hmzxwky/p/5062431.html