標籤:
iOS設計模式 - 單例
原理圖
說明
1. 單例模式人人用過,嚴格的單例模式很少有人用過
2. 嚴格的單例模式指的是無法通過常規的 alloc init 方法來產生對象,派生出來的子類也不能產生出對象,而只能通過單例的方法擷取到對象
源碼
https://github.com/YouXianMing/SingletonPattern
//// Singleton.h// SingletonPattern//// Created by YouXianMing on 15/8/6.// Copyright (c) 2015年 YouXianMing. All rights reserved.//#import <Foundation/Foundation.h>@interface Singleton : NSObject+ (Singleton *)sharedInstance;@end
//// Singleton.m// SingletonPattern//// Created by YouXianMing on 15/8/6.// Copyright (c) 2015年 YouXianMing. All rights reserved.//#import "Singleton.h"#define STR_SINGLETON @"STR_SINGLETON"static Singleton *_sharedSingleton = nil;@implementation Singleton+ (Singleton *)sharedInstance { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _sharedSingleton = (Singleton *)STR_SINGLETON; _sharedSingleton = [[Singleton alloc] init]; }); return _sharedSingleton;}- (instancetype)init { NSString *string = (NSString *)_sharedSingleton; if ([string isKindOfClass:[NSString class]] && [string isEqualToString:STR_SINGLETON]) { self = [super init]; if (self) { } return self; } else { return nil; }}@end
細節
保證只能從shareInstance方法擷取執行個體的技巧
iOS設計模式 - 單例