SingleClass.m
#import <Foundation/Foundation.h>@class SingleClass;static SingleClass *instance = nil;@interface SingleClass : NSObject <NSCopying>+ (instancetype)shareInstance;@end@implementation SingleClass//类方法,获取单例对象+ (instancetype)shareInstance{ if (!instance) { instance = [[self alloc] init]; } return instance;}//类方法,调用对象的alloc方法时返回已存在的单例+ (instancetype)allocWithZone:(struct _NSZone *)zone{ if (!instance) { instance = [super allocWithZone:zone]; } return instance;}//copy时,返回已存在的单例- (id)copyWithZone:(NSZone *)zone{ return instance;}//copy时,返回已存在的单例- (id)copy{ return instance;}@end
main.m
int main(int argc, const char * argv[]) { @autoreleasepool { SingleClass *s1 = [SingleClass shareInstance]; SingleClass *s2 = [SingleClass shareInstance]; SingleClass *s3 = [[SingleClass alloc] init]; SingleClass *s4 = [s1 copy]; NSLog(@"%p",s1); NSLog(@"%p",s2); NSLog(@"%p",s3); NSLog(@"%p",s4); } return 0;}
结果:
2015-03-22 22:24:21.201 SingleDemo[1349:61326] 0x1001066e02015-03-22 22:24:21.202 SingleDemo[1349:61326] 0x1001066e02015-03-22 22:24:21.202 SingleDemo[1349:61326] 0x1001066e02015-03-22 22:24:21.202 SingleDemo[1349:61326] 0x1001066e0
新闻热点
疑难解答