首页 » IOS » iOS 单例模式

iOS 单例模式

原文 http://blog.csdn.net/z979451341/article/details/79071656

2018-01-17 02:01:09阅读(182)


单例模式是为了每次获取一个类的实例是同一个,这又是为了这个实例的内部变量或成员还是之前的,相当于整个工程全局保存数据,并且它还能修改。

直接上例子代码


#import <Foundation/Foundation.h>
@interface Tools : NSObject
@property(nonatomic,strong)NSString* str;
@property(nonatomic,assign)int a;
+(instancetype)shareTools;
@end
#import "Tools.h"
@implementation Tools
static Tools *_instance;
+(instancetype)allocWithZone:(struct _NSZone *)zone{
    @synchronized(self){
        if(_instance == nil){
            _instance = [super allocWithZone:zone];
        }
        return _instance;
    }
}
+(instancetype)shareTools{
    return [[self alloc]init];
}
-(id)copyWithZone:(NSZone* )zone{
    return _instance;
}
-(id)mutableCopyWithZone:(NSZone*)zone{
    return _instance;
}
@end
运行以下代码


    self.tool = [Tools shareTools];
    
    self.tool.str = @"one";
    self.tool.a = 1;
    NSLog(@"%@ %d",self.tool.str,self.tool.a);
    self.tool = [Tools shareTools];
    NSLog(@"%@ %d",self.tool.str,self.tool.a);
    self.tool.str = @"two";
    self.tool.a = 2;
    NSLog(@"%@ %d",self.tool.str,self.tool.a);
结果如下
2018-01-16 10:10:25.094892+0800 First[1104:43105] one 1
2018-01-16 10:10:25.095140+0800 First[1104:43105] one 1
2018-01-16 10:10:25.095286+0800 First[1104:43105] two 2

可以判断Tools类实现了单例模式


最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹