Main.m
/* 创建单例类 */ int main(int argc, const char * argv[]) { // NSBundle *bundle = [NSBundle mainBundle]; // NSFileManager *fileManager = [NSFileManager defaultManager]; SingletonClass *single1 = [SingletonClass defaultClass]; SingletonClass *single2 = [SingletonClass defaultClass]; NSLog(@"single1:%@",single1); NSLog(@"single2:%@",single2); [single1 copy]; //使用alloc方法创建 SingletonClass *single3 = [[SingletonClass alloc] init]; NSLog(@"single3:%@",single3); return 0; }
+ (SingletonClass *)defaultClass;
//定义静态单例对象 static SingletonClass *single = nil; @implementation SingletonClass + (SingletonClass *)defaultClass { if (single == nil) { single = [[SingletonClass alloc] init]; } return single; } //alloc调用的方法 //zone是用来分配和释放内存的 + (id)allocWithZone:(struct _NSZone *)zone { if (single == nil) { single = [super allocWithZone:zone]; } return single; } - (id)copy { return self; } - (id)retain { return self; } - (oneway void)release { //什么都不做 } //返回最大值,不让用户查阅引用计数 - (NSUInteger)retainCount { return UINT_MAX; } - (id)autorelease { return self; }
原文地址:http://blog.csdn.net/pengyuan_d/article/details/40553027