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

    1.单例模式:某个类只能有一个实例,必须自行创建这个实例,必须自行向整个系统提供这个实例,

    通常提供单例的方法以default shared standard开头

    单例在工程中只创建一次,就像打印机,可以被多台电脑调用,打印不同的东西,相当于一个中介作用,一般Manager类中用单例创建对象

    2.在OC中实现单例类:

      为单例对象实现一个静态实例,并初始化,然后设置nil

      实现一个实例构造方法检查上面声明的静态实例是否为nil,如果是则新建并返回一个本类的实例。

      重写allocWithzone方法,用来保证其他人直接使用alloc和init试图获得一个新的实例的时候不产生一个新实例。

      适当实现allocWithZone,copyWithzone.release,和autorealease.

    3.防止自己alloc,应该这么写

    static MyGizmoClass *sharedGizmoManager = nil;

    +(MyGizmoManage == nil){

    if(sharedGizmoManager = [[super allocWithZone:NULL]init];

    }

    return shareGizmoManager;

    }

    +(id)allocWithZone: (NSZone *)zone

    {return [[self sharedManager ]retain];

    }

    4.我们大多数情况下这么写:

    1 +(instancetype)sharedManager{
    2      static PhotoMeanager *instance = nil;
    3      static dispatch_once_t onceToken;
    4      dispatch_once(&onceToken,^{
    5          instance = [[PhotoMeanager alloc]init];
    6      });
    7      return instance;
    8  }
    +(instancetype)sharedOperation{
         if (instance ==nil) {
             instance = [[FileOperation alloc]init];
             
         }
         return instance;
  • 相关阅读:
    一行命令搞定node.js 版本升级
    doesn't contain a valid partition table 解决方法
    debian kill 进程等命令
    FastDFS配置说明(中英文)
    FastDFS问题汇总
    FastDFS常见命令
    FastDFS安装配置手册
    windows 与Linux 互传文件
    FtpClient中文乱码问题解决
    windows 配置host
  • 原文地址:https://www.cnblogs.com/yangqinglong/p/5154767.html
Copyright © 2011-2022 走看看