码迷,mamicode.com
首页 > 移动开发 > 详细

iOS.常用设计模式.01.单例模式

时间:2014-06-08 21:28:11      阅读:364      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

使用单例模式的类:

UIApplication

UIAccelerometer

NSUserDefaults

NSNotificationCenter

NSFileManager

NSBundle等

 

Singleton.h

bubuko.com,布布扣
#import <Foundation/Foundation.h>

@interface Singleton : NSObject

// 始终返回同一个Singleton的指针
+ (Singleton *)sharedManager;

@property (strong,nonatomic) NSString *singletonData;


@end
bubuko.com,布布扣

Singleton.m

bubuko.com,布布扣
#import "Singleton.h"
@implementation Singleton
@synthesize singletonData = _singletonData;
static Singleton *shareManger = nil;

/**
 该方法采用了GCD(Grand Central Dispatch)技术,这是一种机遇C语言的多线程访问计数。
 dispatch_once函数就是GCD提供的,它的作用是在整个应用程序生命周期中只执行一次代码块。
 dispatch_once_t是GCD提供的结构体,使用时需要将GCD地址传给dispatch_once函数。
 dispatch_once函数能够记录该代码快是否被调用过。
 **/
+ (Singleton *)sharedManager
{
    static dispatch_once_t once;
    dispatch_once(&once, ^{
        shareManger = [[self alloc] init];
    });
    return shareManger;
}

@end
bubuko.com,布布扣

SingleAppDelegate

bubuko.com,布布扣
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [Singleton sharedManager].singletonData = @"Singleton init";
    
    NSBundle *bundle = [NSBundle mainBundle];
    NSLog(@"bundle = %@",bundle);
    return YES;
}
bubuko.com,布布扣

SingleViewController.m

bubuko.com,布布扣
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    NSLog(@"viewDidLoad print : %@",[Singleton sharedManager].singletonData);
    NSBundle *bundle = [NSBundle mainBundle];
    NSLog(@"bundle = %@",bundle);
}
bubuko.com,布布扣

 

iOS.常用设计模式.01.单例模式,布布扣,bubuko.com

iOS.常用设计模式.01.单例模式

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/cqchen/p/3775777.html

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