码迷,mamicode.com
首页 > 其他好文 > 详细

创建一个单例类

时间:2015-12-29 01:02:11      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:

关于单例的概念此处不做表述,直接上代码演示如何创建一个单例类。

 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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!