廢話不多說(shuō),直接上代碼,創(chuàng)建一個(gè)繼承于NSObject的類Singleton
在Singleton.h文件中代碼如下
#import <Foundation/Foundation.h>
//.h文件
#define SingletonH + (instancetype)sharedInstance;
//加上斜杠是為了讓編輯器認(rèn)為下一行代碼也是宏的內(nèi)容
//.m文件
#define SingletonM \
static id _instance;\
\
+ (instancetype)sharedInstance\
{\
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;\
}
在Singleton.m文件中什么都不用寫(xiě),只剩下一個(gè)這東西
#import "Singleton.h"
定義好了單利宏顷啼,接下來(lái)看下使用
創(chuàng)建一個(gè)SingletonView状飞,繼承于UIView類
在SingletonView.h文件中代碼如下
#import <UIKit/UIKit.h>
#import "Singleton.h"
@interface SingletonView : UIView
SingletonH;
@end
在SingletonView.m文件中代碼如下
#import "SingletonView.h"
@implementation SingletonView
SingletonM;
@end