zoukankan      html  css  js  c++  java
  • OC 单例模式

    OC 单例模式


    概念

    单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

    书写步骤

    1. 创建类方法,返回对象实例.以shared,default,current开头。
    2. 创建一个全局变量用来保存对象的引用
    3. 判断对象是否存在,若不存在,创建对象

    编写方法

    非线程安全

    static UserHelper * helper = nil;
    + (UserHelper *)sharedUserHelper {
    	if (helper == nil) {
    		helper = [[UserHelper alloc] init];
    	}
        return helper;
    }
    

    线程安全

    方法一

    static UserHelper * helper = nil;
    + (UserHelper *)sharedUserHelper {
        @synchronized(self) {
            
            if (helper == nil) {
                helper = [[UserHelper alloc] init];
            }
        }
        return helper;
    }
    

    方法二

    static UserHelper * helper = nil;
    + (void)initialize {
        
        if ([self class] == [UserHelper class]) {
            helper = [[UserHelper alloc] init];
        }
    }
    

    写法三(苹果推荐,主要用这个)

    static UserHelper * helper = nil;
    + (UserHelper *)sharedUserHelper {
    
    	static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            helper = [[UserHelper alloc] init];
        });
        
        return helper;
    }
    
  • 相关阅读:
    js学习总结----案例之拖拽
    面向对象-数据属性
    Apply和call方法-扩充函数赖以生存的作用域
    JS中的function
    JS数组
    JS需要注意的细节和一些基础知识
    策略模式+简单工厂模式
    多态
    MVC3学习 八 Action和result过滤器及日志处理
    MVC3学习 七 JQuery方式和微软自带的AJAX请求
  • 原文地址:https://www.cnblogs.com/xubaoaichiyu/p/5503225.html
Copyright © 2011-2022 走看看