iOS中單例的通用寫法
iOS中單例的通用寫法(在ARC, MRC下可用),增加了單執行緒訪問限制。
LASingletonPattern.h
#import <Foundation/Foundation.h>
@interface LASingletonPattern : NSObject <NSCopying>
+ (instancetype)shareInstance;
@end
LASingletonPattern.m
#import "LASingletonPattern.h"
@implementation LASingletonPattern
static id _instance;
+ (instancetype)allocWithZone:(struct _NSZone *)zone {
if (_instance == nil) {
@synchronized (self) {
if (_instance == nil) {
_instance = [super allocWithZone:zone];
}
}
}
return _instance;
}
+ (instancetype)shareInstance {
if (_instance == nil) {
@synchronized (self) {
if (_instance == nil) {
_instance = [[self alloc] init];
}
}
}
return _instance;
}
#pragma mark - 重寫MRC相關方法
- (oneway void)release {
}
- (instancetype)retain {
return _instance;
}
- (NSUIntegers)retainCount {
return 1;
}
- (instancetype)autorelease {
return _instance;
}
- (id)copyWithZone:(NSZone *)zone {
return _instance;
}
@end
相關文章
- 花式寫單例之單例的六種寫法單例
- 論單例的寫法單例
- 單例的幾種寫法單例
- 面試中單例模式有幾種寫法?面試單例模式
- 單例模式的六種寫法單例模式
- 單例模式的正確寫法單例模式
- 單例模式的五種寫法單例模式
- 單例模式的七種寫法單例模式
- Java:單例模式的七種寫法Java單例模式
- Python單例的一種簡單寫法Python單例
- 單例模式常用的的兩種寫法單例模式
- 單例模式(下)---聊一聊單例模式的幾種寫法單例模式
- 單例模式(下) - 聊一聊單例模式的幾種寫法單例模式
- 單例模式(下) – 聊一聊單例模式的幾種寫法單例模式
- iOS中的單例設計模式iOS單例設計模式
- 單例模式有幾種寫法?單例模式
- C# 單例模式的五種寫法C#單例模式
- Java基礎系列-單例的7種寫法Java單例
- 單例模式你會幾種寫法?單例模式
- 八、目前JDK中,單例模式這3種寫法你知道嗎?JDK單例模式
- 單例模式的七種寫法,你都知道嗎?單例模式
- 設計模式(一)單例模式的七種寫法設計模式單例
- iOS系統中的字型(swift寫法獲取)iOSSwift
- iOS – 單例模式寫一次就夠了iOS單例模式
- 回字有四種寫法,那你知道單例有五種寫法嗎單例
- ios中的執行緒安全單例實現iOS執行緒單例
- 設計模式 - 單例模式Singleton的8種寫法設計模式單例
- OOAD之單例模式Singleton的6種寫法單例模式
- iOS單例物件iOS單例物件
- iOS - 單例模式iOS單例模式
- iOS中單例解釋(中午小結之前的困惑)iOS單例
- 孔乙己的疑問:單例模式有幾種寫法單例模式
- 關於單例模式,你需要知道的幾種寫法單例模式
- 面試突擊50:單例模式有幾種寫法?面試單例模式
- IOS 單例模式的學習iOS單例模式
- JAVA單例模式的各種寫法分析,最優為列舉Java單例模式
- iOS 單例詳解iOS單例
- iOS單例(方便copy)iOS單例