zoukankan      html  css  js  c++  java
  • iOs 单例模式的定义,实现、步骤

        单例模式就是一个类在系统中最多只有一个实例对象,并通过一个全局的入口对这个实例对象进行访问。

        对于共享的资源,实现多个对象去封装是不必要的,不光占用系统资源,还有可能造成冲突,所以一般使用单例模式。

    #import "DSSingletonObject.h"
    
    @implementation DSSingletonObject
    
    + (DSSingletonObject *)defaultObject {
        static DSSingletonObject *defaultObjectInstance = nil;
        
        if (!defaultObjectInstance)
            defaultObjectInstance = [[super allocWithZone:NULL] init];
        
        return defaultObjectInstance;
    }
    
    + (id)allocWithZone:(struct _NSZone *)zone {
        return [self defaultObject];
    }
    @end

      

    #import <Foundation/Foundation.h>
    
    @interface DSSingletonObject : NSObject
    
    // 写法一
    + (instancetype)defaultObject;
    
    // 写法二:线程安全,iOS4之后常用这种
    + (DSSingletonObject *)sharedObject;
    
    @end
    

      

    int main(int argc, const char * argv[])
    {
        DSSingletonObject *obj = [DSSingletonObject defaultObject];
        NSLog(@"%p", obj);
        
        DSSingletonObject *obj2 = [[DSSingletonObject alloc] init];
        NSLog(@"%p", obj2);
        
        DSSingletonObject *obj3 = [[DSSingletonObject alloc] init];
        NSLog(@"%p", obj3);
        
        
        
        return 0;
    }
    

      

  • 相关阅读:
    1. 首次运行 Git 的配置
    本地git连接github
    Cygwin(linux)中vim配置
    ibatis入门
    XML(可扩展性标记语言)学习汇总一
    第一只小啊小爬虫(纪念下)
    Android SQLite DB的封装
    关于做项目的一些感想
    Git 初学三(git对象与git重置)
    Git 初学二(暂存区)
  • 原文地址:https://www.cnblogs.com/tang910103/p/5061436.html
Copyright © 2011-2022 走看看