当前位置: 首页 > news >正文

IOS设计模式之一:单例模式

单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

#import <Foundation/Foundation.h>
 
 @interface Singleton : NSObject 
 +(Singleton *) instance;
@end @implementation Singleton
+(Singleton *) instance { static Singleton *sharedSingleton_ = nil; @synchronized(self){ if(sharedSingleton_ == nil){ sharedSingleton_ = [NSAllocateObject([self class], 0, NULL) init]; } } return sharedSingleton_; } + (id) allocWithZone:(NSZone *)zone { return [[self sharedInstance] retain]; } - (id) copyWithZone:(NSZone*)zone { return self; } - (id) retain { return self; } - (NSUInteger) retainCount { return NSUIntegerMax; } -(void)release { [super release]; } - (id) autorelease { return self; } @end

 当然,ios 5以上启用ARC就简单多了:

static RootViewController* sharedRootController = nil;
 
+(RootViewController *) sharedController{
    @synchronized(self){
        if (sharedRootController == nil) {
           sharedRootController = [[self alloc] init];
        }
    }
    return  singleController;
}

转载于:https://www.cnblogs.com/limlee/archive/2012/06/13/2547310.html

相关文章:

  • 软件从业人员如何激发敏捷团队?
  • hibernate.properties文件与hibernate.cfg.xml文件
  • USACO2.2 Party Lamps(lamps)
  • [php] 数据结构算法(PHP描述) 快速排序 quick sort
  • Macbook双系统多分区的解决方案
  • java好的IO示例
  • MyBatis的动态SQL详解
  • 目标模型和现实模型
  • 在pictureBox中拖动图片的实现代码
  • linux-文件类型
  • dll分析
  • 选择Drupal的10大理由
  • argc argv 的使用
  • 劣质电源线引发的硬盘故障
  • struts2常用标签
  • 10个确保微服务与容器安全的最佳实践
  • AHK 中 = 和 == 等比较运算符的用法
  • ComponentOne 2017 V2版本正式发布
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Java反射-动态类加载和重新加载
  • Map集合、散列表、红黑树介绍
  • node.js
  • React-redux的原理以及使用
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • Vue官网教程学习过程中值得记录的一些事情
  • Web标准制定过程
  • 笨办法学C 练习34:动态数组
  • 闭包--闭包作用之保存(一)
  • 对象管理器(defineProperty)学习笔记
  • 服务器从安装到部署全过程(二)
  • 工作手记之html2canvas使用概述
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 前言-如何学习区块链
  • 设计模式 开闭原则
  • 深度学习中的信息论知识详解
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 微信公众号开发小记——5.python微信红包
  • 学习JavaScript数据结构与算法 — 树
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • # centos7下FFmpeg环境部署记录
  • (+4)2.2UML建模图
  • (笔试题)合法字符串
  • (六)激光线扫描-三维重建
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • .describe() python_Python-Win32com-Excel
  • .NET CORE 第一节 创建基本的 asp.net core
  • .net MySql
  • .net 中viewstate的原理和使用
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .net开发时的诡异问题,button的onclick事件无效