标签:
关于单例的概念此处不做表述,直接上代码演示如何创建一个单例类。
1 #import <Foundation/Foundation.h> 2 3 @interface MJDemo : NSObject 4 5 + (instancetype)sharedDemo; 6 7 @end 8 9 10 #import "MJDemo.h" 11 12 @implementation MJDemo 13 14 //在iOS中所有对象分配内存空间,最终都会调用allocWithZone:方法,如果要做单例需要提供此方法 15 + (instancetype)allocWithZone:(struct _NSZone *)zone{ 16 static MJDemo *instance; 17 static dispatch_once_t onceToken; 18 dispatch_once(&onceToken, ^{ 19 //该代码只被执行一次 20 instance = [super allocWithZone:zone]; 21 }); 22 23 return instance; 24 } 25 26 + (instancetype)sharedDemo{ 27 return [[self alloc] init]; 28 } 29 30 @end
#import <Foundation/Foundation.h>
@interface MJDemo : NSObject
//使用该方法快速生成一个单例实例
+ (instancetype)sharedDemo;
@end
#import "MJDemo.h"
@implementation MJDemo
//在iOS中所有对象分配内存空间,最终都会调用allocWithZone:方法,如果要做单例需要提供此方法
+ (instancetype)allocWithZone:(struct _NSZone *)zone{
static MJDemo *instance;
static dispatch_once_t onceToken;
//dispatch_once()宏可以保证块代码中的指令只被执行一次
dispatch_once(&onceToken, ^{
//永远只被执行一次
instance = [super allocWithZone:zone];
});
return instance;
}
+ (instancetype)sharedDemo{
return [[self alloc] init];
}
@end
标签:
原文地址:http://www.cnblogs.com/mooney/p/5084483.html