美文网首页
设计模式——单例

设计模式——单例

作者: sky_fighting | 来源:发表于2018-05-04 17:12 被阅读4次

    单例,确保程序运行中该类只有一个实例,常用于资源共享。例如:[UIApplication sharedApplication];

    OC写法:

    #import <Foundation/Foundation.h>
    
    @interface Review_SingleInstance : NSObject
    +(Review_SingleInstance *)shareInstance;
    @end
    
    #import "Review_SingleInstance.h"
    
    @implementation Review_SingleInstance
    
    static Review_SingleInstance *_instance = nil;
    
    +(Review_SingleInstance *)shareInstance{   
    
        static dispatch_once_t onceToken;   
    
        dispatch_once(&onceToken, ^{       
    
            _instance = [[[self class] alloc] init];   
    
        });   
    
        return _instance;
    
    }
    //为了防止使用alloc、new重复创建对象,需要添加下面方法
    +(instancetype)allocWithZone:(struct _NSZone *)zone{   
    
        static dispatch_once_t onceToken;   
    
        dispatch_once(&onceToken, ^{       
    
            _instance = [super allocWithZone:zone];   
    
        });   
    
        return _instance;
    
    }
    
    调用:
    
    Review_SingleInstance *instance1 = [Review_SingleInstance shareInstance];    
    NSLog(@"%@",instance1);
    

    Swift写法:

    import UIKit
    
    class RISDesignPattern:NSObject{
    
        // MARK: - 单例
    
        static let instance : RISDesignPattern = RISDesignPattern()
    
        private override init() {
    
        }
    
    }
    
    调用:
    
    // MARK: - 实例化设计模式 - 单例   
    
    let designPattern = RISDesignPattern.instance
    

    关于单例类属性的问题

    单例类中属性赋值 - 需要创建获取空间的属性,要放在shareInstance中,才不会重复创建,因为init方法会被重新执行

    相关文章

      网友评论

          本文标题:设计模式——单例

          本文链接:https://www.haomeiwen.com/subject/hutjrftx.html