//单例模式
//指一个类只能有一个对象,而且这个对象不能被销毁
//1、创建一个静态的本类指针给其赋值为nil;
static Sun* sharedSun = nil;
//2、编写一个工厂方法,根据sharedSun是否为空进行创建或者直接返回;如果为nil,用该指针指向一个新对象,然后返回,否则直接返回;
+(instancetype)sharedSun{
if(sharedSun==nil){
sharedSun = [[Sun alloc]init];
}
return sharedSun;
}
//3、重写allocWithZone:方法,因为在调用alloc方法的时候alloc方法会自动调用此方法
+(instancetype)allocWithZone:(struct _NSZone *)zone{
if(sharedSun==nil){
sharedSun = [super allocWithZone:zone];
}
return sharedSun;
}
//4、遵守<NSCopying>协议,实现copyWithZone:
-(id)copyWithZone:(NSZone *)zone{
return self;
}
//5、MRC下重写release方法
//什么都不写 可以避免在使用对象调用release的时候去调用
//oneway 不支持回滚
//不重写release 回去调用父类的release销毁对象
-(oneway void)release{
}
//也不+1
-(instancetype)retain{
return self;
}