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
就可以解决这个问题
表示声明的时候不导入但是在实现的时候导入