您的位置:首页 > 移动开发 > IOS开发

iOS中写一个完整的单例

2015-12-18 15:34 357 查看
一、单例(ARC)

1,当调用alloc方法,系统会调用
这个方法

2,先判断shareManger

这个类是否为空,如果为空就调用父类的方法分配空间,否则直接返回

3,copy

ThemeManger *tm = [ThemeManger shareManger];

[tm copy];//复制一个同样的对象,单例里面不允许这样

mutableCopy复制副本是可变的

(MRC)单例,需要重写以下四个方法

防止创建一个对象之后,MRC环境下会手动管理内存,调用relese活autorelese方法,单例情况下不让对象销毁,我们重写relese方法与autorelese方法(什么事情都不做)

完整code:
static
ViewController
*Vc = nil;

+ (ViewController
*) defaultShare{

    static
dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        Vc
= [[ViewController
alloc]
init];

    });

    return
Vc;

}

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

    if
(zone==nil) {

       

        Vc
= [super
allocWithZone:zone];

        return
Vc;

    }

    return
nil;

}

+ (id) copyWithZone:(struct
_NSZone
*)zone{

    if
(zone == nil) {

       

        Vc
= [super
copyWithZone:zone];

        return
Vc;

    }

    return
nil;

}

+ (id) mutableCopyWithZone:(struct
_NSZone
*)zone{

    if
(zone == nil) {

       

        Vc
= [super
mutableCopyWithZone:zone];

        return
Vc;

    }

    return
nil;

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