//========================================================================================
// Singleton.h
//========================================================================================
#import <Foundation/Foundation.h>
@interface Singleton : NSObject
+(Singleton*)GetInstance;
-(void)SayHello;
@end
//========================================================================================
// Singleton.m
//========================================================================================
#import "Singleton.h"
@implementation Singleton
static Singleton *myInstance = nil;
static int num;
+(Singleton*)GetInstance{
@synchronized([Singleton class]){
if(nil == myInstance){
myInstance = [[self alloc]init];
}
}
return myInstance;
}
+(id)alloc{
@synchronized([Singleton class]){
if(nil == myInstance) {
myInstance = [super alloc];
num++;
NSLog(@"对象数目:%d",num);
}
else{
NSLog(@"不好意思,你在实例化第二个对象");
}
return myInstance;
}
return nil;
}
-(id)init{
self = [super init];
if(self != nil){
NSLog(@"初始化数据");
}
return self;
}
-(void)SayHello{
NSLog(@"Hello,world!");
}
@end
//========================================================================================
// Main.m
//========================================================================================
#import <Foundation/Foundation.h>
#import "Singleton.h"
int main(int argc, const char* argv[])
{
@autoreleasepool{
Singleton *singleton = [Singleton GetInstance];
[singleton SayHello];
singleton = [Singleton new];
[singleton SayHello];
}
return 0;
}
//====================================================================================
《Objective C--单例模式》
[转]http://blog.csdn.net/djl4104804/article/details/7846035