重溫-單例模式,重溫-模式

來源:互聯網
上載者:User

重溫-單例模式,重溫-模式

1. 單例設計模式(Singleton)

* 保證某個類建立出來的對象永遠只有一個

2. 作用

* 節省記憶體開銷。

* 如果有些資料,整個程式中都用得上,只需要使用同一份資源(保證大家訪問的資料是相同一致的)

*  一般來說工具類設計為單例模式合適

3. 實現

* MRC

* ARC

SoundTool.h

1 #import <Foundation/Foundation.h>2 3 @interface SoundTool : NSObject <NSCopying>4 5 + (instancetype)shareSoundTool;6 7 @endView Code

SoundTool.m

#import "SoundTool.h"@implementation SoundToolstatic id _instance = nil;+ (instancetype)allocWithZone:(struct _NSZone *)zone{ if (_instance == nil) { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance = [super allocWithZone:zone]; }); } return _instance;}+ (instancetype)shareSoundTool{ return [[self alloc] init];}- (instancetype)init{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance = [super init]; }); return _instance;}+ (instancetype)copyWithZone:(struct _NSZone *)zone{ return _instance;}+ (instancetype)mutableCopyWithZone:(struct _NSZone *)zone{ return _instance;}//以下三個為非ARC使用- (oneway void)release{}- (instancetype)retain{ return _instance;}- (NSUInteger)retainCount{ return 1;}View Code

4. 建議封裝成宏使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.