zoukankan      html  css  js  c++  java
  • 单例的实现(完整版代码)

    #import "XMGTool.h"

     

    static XMGTool * _instance;//静态变量保证了单例的唯一性,静态变量是程序一开始就存在的

     

    @interface XMGTool ()<NSCopying, NSMutableCopying>

     

    @end

     

    @implementation XMGTool

     

    +(instancetype)allocWithZone:(struct _NSZone *)zone

    {

        static dispatch_once_t onceToken;

        dispatch_once(&onceToken, ^{

            _instance = [super allocWithZone:zone];

        });

        return _instance;

    }

     

    +(instancetype)shareTool

    {

        return [[self alloc]init];

    }

     

    - (nonnull id)copyWithZone:(nullable NSZone *)zone {

        return _instance;

    }

     

    - (nonnull id)mutableCopyWithZone:(nullable NSZone *)zone {

        return _instance;

    }

     

    @end

     

     

    外界的调用:

     

      XMGTool *t1 = [[XMGTool alloc]init];

       XMGTool *t2 = [[XMGTool alloc]init];

       XMGTool *t3 = [XMGTool shareTool];

       XMGTool *t4 = [t1 mutableCopy];

        

        NSLog(@" %@-- %@-- %@--- %@",t1,t2,t3,t4);

     

    打印结果

    <XMGTool: 0x6000011b2e30>--

    <XMGTool: 0x6000011b2e30>--

    <XMGTool: 0x6000011b2e30>---

    <XMGTool: 0x6000011b2e30>

  • 相关阅读:
    ajax 检测用户名是否可用
    Ajax 知识
    flask 基础
    如何使Session永不过期
    Css 截取字符串长度
    json sort
    js 原生获取Class元素
    js 跳转整理
    html5 ajax Java接口 上传图片
    调用URL 接口服务
  • 原文地址:https://www.cnblogs.com/dashengios/p/10420541.html
Copyright © 2011-2022 走看看