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;
  • 相关阅读:
    2017年7月10日 20:34:02 简易博客记录组
    Oracle审计表AUD$处理方法 (Z)
    Oracle中trace的几种(Z)
    查看oracle数据库是否归档和修改归档模式(转)
    oracle exp-000991
    基于公司级平台封装的SqlserverHelper
    pycharm运行测试程序提示no tests were found
    10-13 验证用户
    10-11 喜欢的数字
    10-1 Python 学习笔记
  • 原文地址:https://www.cnblogs.com/yangqinglong/p/5154767.html
Copyright © 2011-2022 走看看