下面小编就为大家分享一篇ios 单利的完整使用实例 及销毁 宏定义,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
如下所示:
//下面这段宏考过去直接用
#define SYNTHESIZE_SINGLETON_FOR_HEADER(className) \
\
+ (className *)sharedInstance;\
+ (void)destroyInstance;
//在单例生成之前onceToken = 0,在单例生成之后onceToken = -1了,之后一直保持-1这个值,知道这个之后我想你应该有思路了
#define SYNTHESIZE_SINGLETON_FOR_CLASS(className) \
\
static className *shared##className = nil; \
static dispatch_once_t onceToken;\
+ (className *)sharedInstance\
{\
return [[self alloc] init];\
}\
+ (className *)allocWithZone:(struct _NSZone *)zone\
{\
dispatch_once(&onceToken, ^{\
shared##className = [super allocWithZone:zone];\
});\
return shared##className;\
}\
- (className *)copyWithZone:(NSZone *)zone\
{\
return shared##className;\
}\
- (className *)mutableCopyWithZone:(NSZone *)zone\
{\
return shared##className;\
}\
+ (void)destroyInstance {\
shared##className = nil;\
onceToken = 0;\
}\
//用法,注意要遵循NSCopying,NSMutableCopying 协议
import <Foundation/Foundation.h>
@interface YNHTUserModel : NSObject<NSCopying,NSMutableCopying>
SYNTHESIZE_SINGLETON_FOR_HEADER(YNHTUserModel);
@property (nonatomic,copy) NSString* inviter_id;//邀请人ID
@property (nonatomic,copy) NSString* token;
@property (nonatomic,copy) NSString* nick_name;
@end
#import "YNHTUserModel.h"
@implementation YNHTUserModel
SYNTHESIZE_SINGLETON_FOR_CLASS(YNHTUserModel);
@end
以上这篇ios 单利的完整使用实例 及销毁 宏定义就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程学习网。
沃梦达教程
本文标题为:ios 单利的完整使用实例 及销毁 宏定义
猜你喜欢
- Android实现监听音量的变化 2023-03-30
- 详解flutter engine 那些没被释放的东西 2022-12-04
- 作为iOS开发,这道面试题你能答出来,说明你基础很OK! 2023-09-14
- 最好用的ios数据恢复软件:PhoneRescue for Mac 2023-09-14
- Android实现轮询的三种方式 2023-02-17
- Android studio实现动态背景页面 2023-05-23
- SurfaceView播放视频发送弹幕并实现滚动歌词 2023-01-02
- Android MaterialButton使用实例详解(告别shape、selector) 2023-06-16
- Flutter实现底部和顶部导航栏 2022-08-31
- iOS 对当前webView进行截屏的方法 2023-03-01
