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

【iOS-Develop技术文章-003】OC单例模式

时间:2015-12-14 12:19:41      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

一、OC单例概述

  在iOS开发中,单例是最有用的设计模式之一。它是在代码间共享数据而不需要手动传递参数的一种最有用的方法。

  单例的好处:

    (1)有的东西只能有一个,那就必须用单例;

    (2)单例的好处就是不会有多余的实例,所以节约内存;

    (3)因为只有一个单例,所以易于管理多线程对它的访问。

  单例是一种重要的概念,它是一种极其便利的设计模式。在iPhone SDK中大量使用了单例的概念,例如,UIApplication的sharedApplication方法,任何时候都会返回一个当前应用程序的UIApplication实例。

 

二、代码实现

  使用下列代码实现一个单例类:

  MyManager.h

1  #import<foundation/Foundation.h>
2  @interfaceMyManager : NSObject
3  +(id)sharedManager;
4  
5  @end

  MyManager.m 

 1 #import"MyManager.h"
 2 @implementationMyManager
 3 
 4 +(id)sharedManager {
 5     static MyManager*sharedMyManager = nil;
 6     static dispatch_once_tonceToken;
 7    dispatch_once(&onceToken, ^{
 8         sharedMyManager = [[self alloc] init];
 9     });
10     return sharedMyManager;
11 }
12 @end

  我们定义了一个静态变量叫做sharedMyManager,它在sharedManager方法中只会被实例化一次。通过GCD的dispath_once方法,我们确保sharedMyManager方法只会被创建一次。这是线程安全的,你无需担心什么。

  但是,如果你不想用GCG,也可以这样实现sharedManager方法:

1 + (id)sharedManager {
2     @synchronized(self) {
3        if (sharedMyManager == nil)
4            sharedMyManager = [[self alloc] init];
5     }
6     returnsharedMyManager;
7 }

  这样调用单例对象:

MyManager *sharedManager = [MyManager sharedManager];

 

【iOS-Develop技术文章-003】OC单例模式

标签:

原文地址:http://www.cnblogs.com/songshuhaoNB/p/5044708.html

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