单例

//

//  singleton.h

//  singleton

//

//  Created by zmx on 16/2/20.

//  Copyright © 2016 zmx. All rights reserved.

//


#define singleton_h(name) + (instancetype)shared##name;


#if __has_feature(objc_arc)


#define singleton_m(name) static id _instance; \

\

+ (instancetype)shared##name { \

    static dispatch_once_t onceToken; \

    dispatch_once(&onceToken, ^{ \

        _instance = [[self alloc] init]; \

    }); \

    return _instance; \

} \

\

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

    static dispatch_once_t onceToken; \

    dispatch_once(&onceToken, ^{ \

        _instance = [super allocWithZone:zone]; \

    }); \

    return _instance; \

} \

\

- (id)copyWithZone:(NSZone *)zone { \

    return _instance; \

}


#else


#define singleton_m(name) static id _instance; \

\

+ (instancetype)sharedAudioTool { \

    static dispatch_once_t onceToken; \

    dispatch_once(&onceToken, ^{ \

        _instance = [[self alloc] init]; \

    }); \

    return _instance; \

} \

\

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

    static dispatch_once_t onceToken; \

    dispatch_once(&onceToken, ^{ \

        _instance = [super allocWithZone:zone]; \

    }); \

    return _instance; \

} \

\

- (id)copyWithZone:(NSZone *)zone { \

    return _instance; \

} \

\

- (instancetype)retain { \

    return _instance; \

} \

\

- (instancetype)autorelease { \

    return _instance; \

} \

\

- (oneway void)release { \

    \

} \

\

- (NSUInteger)retainCount { \

    return 1; \

}


#endif


//

//  AudioTool.h

//  singleton

//

//  Created by zmx on 16/2/20.

//  Copyright © 2016 zmx. All rights reserved.

//


#import <Foundation/Foundation.h>

#import "singleton.h"


@interface AudioTool : NSObject <NSCopying>


singleton_h(AudioTool)


@end


//

//  AudioTool.m

//  singleton

//

//  Created by zmx on 16/2/20.

//  Copyright © 2016 zmx. All rights reserved.

//


#import "AudioTool.h"


@implementation AudioTool


singleton_m(AudioTool)


@end



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值