-
单例:很霸道,很专一
定义:一个类,在整个程序当中只允许通过类方法创建一个对象,在调用这个类的属性和方法的时候,只能通过这个对象,这就是单例 -
作用:
1.保值
2.可以建立一个公共的访问点,在需要的时候调用它,单例属于设计模式(前人总结的一些经验,目前大约是32种,能讲到大约7-8种)的一种,
常用的: MVC KVC KVO 单例 代理 通知 工厂
// 1.设置静态的全局变量
static Setting *sign = nil;
// 存储在静态存储区
@implementation Setting
+ (Setting *)sharedSingle
{
// 2.保证线程安全
@synchronized(self)
{
// 3.当对象不存在时,创建对象。当以后再创建对象时,由于sign是静态变量,所以不为空,不会再创建新的对象了
if (sign == nil) {
sign = [[Setting alloc] init];
}
}
// 返回自己
return sign;
}
// 这个方法是调用alloc方法时,alloc内部实际调用的创建对象的方法
// 注意:在实际中若要保证对象的绝对唯一,并不是只需要重写这一个方 法,还有copywithzone:等
+ (id)allocWithZone:(struct _NSZone *)zone
{
@synchronized(self)
{
if ((self == nil)) {
sign = [super allocWithZone:zone];
}
}
return sign;
}
+ (void)releaseSingle // 放弃当前的单例对象
{
if (sign) {
sign = nil;
}
}
网友评论