单例(singleton)

//

//  SoundTools.m

//  02-单例(ARC)

//

//  Created by apple on 14-8-24.

//  Copyright (c) 2014年apple. All rights reserved.

//

#import"SoundTools.h"

/**

单例小结:

1.创建一个静态的实例对象,在静态区保存唯一的副本

2.创建一个sharedXXX类方法,方便全局统一条用

3.重写allocWithZone方法

如果是面试,写上面三步就够了

4. copyWithZone方法

*/

@implementationSoundTools

staticSoundTools*_instance;

/**是为当前对象分配内存空间,所有方法都会最终调用的方法*/

/**

无论如何实例化,在内存中都最多保留一个副本,对象应该保存在静态区

静态区中的对象,是在整个程序结束后,才会被销毁。

*/

+ (id)allocWithZone:(struct_NSZone*)zone

{

//    return nil;

//懒加载,不能保证多线程并发的实例化是唯一的

//加互斥锁,性能非常糟糕。苹果强烈不建议程序员使用!

//    @synchronized(self) {

//        if (_instance == nil) {

//            _instance = [super allocWithZone:zone];

//        }

//    }

// dispatch_once能够确保块代码中的操作只被执行一次

staticdispatch_once_tonceToken;

dispatch_once(&onceToken, ^{

// block中的代码只能被执行一次

_instance= [superallocWithZone:zone];

});

return_instance;

}

+ (instancetype)sharedSoundTools

{

//无论调用多少次类方法,对象只会被初始化一次

staticdispatch_once_tonceToken;

dispatch_once(&onceToken, ^{

_instance= [[selfalloc]init];

});

return_instance;

}

- (id)copyWithZone:(NSZone*)zone

{

return_instance;

}

#pragma mark - MRC相关方法

//判断是否支持MRC

#if !__has_feature(objc_arc)

- (onewayvoid)release {}

- (id)retain {return_instance; }

- (id)autorelease {return_instance; }

- (NSUInteger)retainCount {returnUINT_MAX; }

#endif

- (id)init

{

self= [superinit];

if(self) {

staticdispatch_once_tonceToken;

dispatch_once(&onceToken, ^{

//对象属性的初始化

self.num=100;

NSLog(@"初始化了- %d",self.num);

});

}

returnself;

}

- (void)playSoundWithName:(NSString*)name

{

NSLog(@"播放声音%@", name);

}

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例模式的作用是用来解决一个应用中某个类只有唯一一个对象的问题。单例类在iOS开发中是非常重要的,在系统提供个类中...
    赵亦晨阅读 447评论 0 1
  • 单例模式就是只有一个实例,确保一个类只有一个实例,并且自行实例化并向整个系统提供这个实例,一个单例类可以实现在不同...
    mayday2024阅读 545评论 1 4
  • 单例模式 单例的目的:希望对象只创建一个单例,并且提供一个全局的访问点 单例模式(arc) +(instancet...
    三岁就很乖阅读 547评论 0 0
  • // .h #define singleton_interface(class) + (instancetype)...
    迡風旳等待阅读 627评论 1 2
  • 夜深了,没有一丝睡意,敞开心扉,思绪像汹涌而来的波涛,一浪胜过一浪,又如涓涓细流在笔尖流淌,情绪也随着波动,时而悲...
    执笔流年_5b25阅读 292评论 0 3