首页 > 学院 > 开发设计 > 正文

OC单例模式的实现

2019-11-14 19:23:44
字体:
来源:转载
供稿:网友

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

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表