您的位置:首页 > 其它

单例

2016-02-19 09:27 190 查看
***************

单例:只能实例化出一个对象的类

是常用的设计模式之一

整个应用程序的生命周期中只实例化一次

生命周期:对象只有程序退出时才会销毁

使用场合:某一个对象会被频繁的创建销毁, 数据共享

固定写法:

① static WYXxx *wyXxx = nil;

+(WYXxx *)sharedWYXxx

{

if (nil)

{ 实例化 }

return xx;

}

全局变量 全局方法

①存值,全工程都能用

②封装常用方法 全工程的类都能用的方法

如何避免用alloc初始化:

+ (id)allocWithZone:(struct
_NSZone *)zone;

+ (id)alloc;

调用第二个方法 的时候 都会先自动调第一个方法

如何避免release等内存管理:

重写release等内存管理的方法

oneway的意思就是不能出现return

+ (WYHttpManager *)sharedManager

{

if (!manager) {

manager = [[WYHttpManager
alloc] init];

}

return manager;

}

+ (instancetype)allocWithZone:(struct _NSZone *)zone

{

if (!manager) {

manager = [super allocWithZone:zone];

return manager;

}

return nil;

}

- (oneway void)release

{

}

- (instancetype)retain

{

return self;

}

- (instancetype)autorelease

{

return self;

}

**********************GCD的单例************************

dispatch_once_t

单例

static dispatch_once_t
onceToken;

dispatch_once(&onceToken,
^{
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: