星空网 > 软件开发 > 操作系统

OC单例模式的实现

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

 




原标题:OC单例模式的实现

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流