黑马程序员 之 Objective-C 单例模式 学习记录

来源:互联网 发布:ubuntu下安装mysql5.7 编辑:程序博客网 时间:2024/06/06 02:55

单例模式,实则上是只有一个实例,某一个类只能有一个实例,它需要自行创建,并且要向整个系统程序提供这个实例。

1.单例模式的实现思路

       1. 定义一个私有的实例

       2. 用一个类方法,完成实例的共享(******核心*******

       3. 屏蔽有关创建销毁实例的方法,限制这个类只能创建一个对象

2.单例模式的应用场景

       1.单例对象可以存储一些共享的信息,每个对象都能访问和修改

       2.如果一个类的创建非常耗费性能,那么这个类最好设计为单例,只创建一次节约性能。

3.单例模式的代码实现

/****************************第一步****************************/
static ContactBook *shareBook = nil;
@implementation ContactBook
/****************************第二步****************************/
+ (ContactBook *) sharedInstance 
{
@synchronized (self)
{
     if (sharedBook == nil)
    {
        [[self alloc] init];
    }
}
    return shareBook;
}
/****************************第三步****************************/

+ (id) allocWithZone:(NSZone *)zone 
{
@synchronized (self) {
    if (shareBook == nil) {
        shareBook = [super allocWithZone:zone];
        return shareBook;
    }
}
    return nil;
}

- (id) copyWithZone:(NSZone *)zone 
{
    return self;
}

- (id) retain
{
    return self;
}

- (unsigned) retainCount
{
    return UINT_MAX;
}

- (oneway void) release
{

}

- (id) autorelease
{
    return self;
}

- (id)init
{
@synchronized(self) {
    [super init];//往往放一些要初始化的变量.
    return self;
    }
}
@end
如果本人有写错的,或者没看懂的,欢迎一起探讨!!!

0 0
原创粉丝点击