[IOS 下重温设计模式] - Singleton

@interface Singleton : NSObject
{
}
+ (Singleton *) sharedInstance;
- (void) operation;
@end

#import "Singleton.h"
@implementation Singleton
static Singleton *sharedSingleton_ = nil;
- (void) operation
{
// do something
NSLog(@"Singleton");
}
+ (Singleton *) sharedInstance
{
if (sharedSingleton_ == nil)
{
sharedSingleton_ = [NSAllocateObject([self class], 0, NULL) init];
}
return sharedSingleton_;
}
+ (id) allocWithZone:(NSZone *)zone
{
return [[self sharedInstance] retain];
}
- (id) copyWithZone:(NSZone*)zone
{
return self;
}
- (id) retain
{
return self;
}
- (NSUInteger) retainCount
{
return NSUIntegerMax; // denotes an object that cannot be released
}
- (void) release
{
// do nothing
}
- (id) autorelease
{
return self;
}
@end
=============================

@interface MySingleton : Singleton
{
}
@end

@implementation MySingleton
- (id) init
{
return self;
}
- (void) operation
{
// do something
NSLog(@"MySingleton");
}
@end
=============================
client:

Singleton *s = [MySingleton sharedInstance];
[s operation];
作者:GangWang
出处:http://www.cnblogs.com/GnagWang/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步