UI:单例的写法
单例设计模式 参考
UIApplication sharedApplocation 详细解释 :参考
通讯录的helper 类的读取本地plist 文件的时候,使用的单例
单例的要点有三个:一个类只能有一个实例;这个实例只能有类本身自己创建;这个类必须为全系统提供使用这个实例;
单例模式的优点: 能够阻止其他对象实例化自己类的副本,从而保证所有的对象都能够访问唯一的实例。
单例模式的灵活性:因为类控制了实例化过程,所以类可以更加灵活的修改实例化的过程。
在IOS中的单例模式一般要做以下的四个步骤:
为单例对象实现一个静态实例,并初始化,然后设置成nil
实现一个实例的构造方法检查上面声明的静态实例是否为nil,如果是空则新建并返回一个本类的实例
重写allcWithZone方法,用来保证其他人直接使用allock 和 init 视图获得一个新的实例的时候不产生一个新的实例
适当的实现 allockWithZone ,copyWithZone ,release和autorelease.
static SurveyRunTimeData *sharedObj = nil; //第一步:静态实例,并初始化。
@implementation SurveyRunTimeData
+ (SurveyRunTimeData*) sharedInstance //第二步:实例构造检查静态实例是否为nil
{
@synchronized (self)
{
if (sharedObj == nil)
{
[[self alloc] init];
}
}
return sharedObj;
} + (id) allocWithZone:(NSZone *)zone //第三步:重写allocWithZone方法
{
@synchronized (self) {
if (sharedObj == nil) {
sharedObj = [super allocWithZone:zone];
return sharedObj;
}
}
return nil;
} - (id) copyWithZone:(NSZone *)zone //第四步
{
return self;
} - (id) retain
{
return self;
} - (unsigned) retainCount
{
return UINT_MAX;
} - (oneway void) release
{ } - (id) autorelease
{
return self;
} - (id)init
{
@synchronized(self) {
[super init];//往往放一些要初始化的变量.
return self;
}
} @end
单例代码
单例的写法:
第一步:在单例类里声明单例方法。
第二步:在单例类的实现方法里去实现单例方法。注意实现的时候的固定写法。@synchronized(self){}
@implementation DataBaseHelper
//单例方法
static DataBaseHelper *helper = nil;
+ (DataBaseHelper *)defaultDBHelper {
@synchronized(self) {
if (!helper) {
helper = [[DataBaseHelper alloc] init];
//程序每次运行,只从数据库里读取一次数据即可
[self createTableInDataBase];//创建表
[self selectFromDataBase];//读取数据
}
}
return helper;
}
UI:单例的写法的更多相关文章
- 关于Java单例
参考资料:http://blog.csdn.net/haoel/article/details/4028232 public class SingletonTest implements Runnab ...
- Swift中的单例的实现方式
单例在iOS日常开发中是一个很常用的模式.对于希望在 app 的生命周期中只应该存在一个的对象,保证对象的唯一性的时候,一般都会使用单例来实现功能.在OC单例的写法如下: @implementatio ...
- OC基础 单例
#undef AS_SINGLETON #define AS_SINGLETON( __class ) \ + (__class *)sharedInstance; #un ...
- Swift 2.0 单例的用法
单例我们项目中是很常用的,今天刚学了在swift中怎么写单例和调用单例.下面我们简单的介绍一下.我们先看看Swift单例的写法: import UIKit class Shareinstance: N ...
- Javascript 设计模式 单例
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/30490955 一直很喜欢Js,,,今天写一个Js的单例模式实现以及用法. 1.单 ...
- Hi,我们再来聊一聊Java的单例吧(转)
1. 前言 单例(Singleton)应该是开发者们最熟悉的设计模式了,并且好像也是最容易实现的——基本上每个开发者都能够随手写出——但是,真的是这样吗? 作为一个Java开发者,也许你觉得自己对单例 ...
- 完美单例宏定义(兼容ARC和MRC),项目中可以直接使用
单例模式: 1.永远只分配一块内存来创建对象 2.提供一个类方法, 返回内部唯一的一个对象(一个实例) 3.最好保证init方法也只初始化一次 写一个宏定义文件,传入宏定义函数名,自动生成符合类名的 ...
- iOS单例创建的一点疑惑
线程安全的单例常用写法, +(AccountManager *)sharedManager{ static AccountManager *defaultManager = nil; disptch_ ...
- C++并发与多线程学习笔记--单例设计模式、共享数据分析
设计模式 共享数据分析 call_once 设计模式 开发程序中的一些特殊写法,这些写法和常规写法不一样,但是程序灵活,维护起来方便,别人接管起来,阅读代码的时候都会很痛苦.用设计模式理念写出来的代码 ...
随机推荐
- Codeforces936D. World of Tank
$n \leq 1e9$,$n*2$的网格里有$m_1+m_2 \leq 1e6$个障碍物,现有一坦克从$(0,1)$出发要到$(n+1,1/2)$,他每秒可以换行(纵坐标1变2或2变1)也可以发炮弹 ...
- Apache 文件根目录设置修改方法 (Document Root)
最近在学习WordPress,使用appServ 在windows上搭建Php开发环境 在网上查找到的关于修改Apache服务器根目录的资料,对比学习,再此记录 在安装 Apache 时,系统会给定一 ...
- strcpy c标准库函数
C语言标准库函数strcpy,把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间. 已知strcpy函数的原型是: char *strcpy(char *dst, const ...
- File类的三种构造方法
package cn.zmh.File; import java.io.File; /* * * File类的构造方法 三种重载形式 * * */ public class FileDemo1 { p ...
- [MGR——Mysql的组复制之多主模式 ] 详细搭建部署过程
组复制可以在两种模式下运行. 1.在单主模式下,组复制具有自动选主功能,每次只有一个 server成员接受更新.2.在多主模式下,所有的 server 成员都可以同时接受更新. 组复制与异步主从复 ...
- [Angular] Expose Angular Component Logic Using State Reducers
A component author has no way of knowing which state changes a consumer will want to override, but s ...
- android多个fragment返回键层层返回
在FragmentActivity的fragment跳转的时候加入到执行栈. public void switchFrag(BaseFragment to) { getSupportFragmentM ...
- Linux性能诊断工具
vmstat:虚拟内存状况 –swpd free buff cache si so in cs 參考:http://www.cnblogs.com/ggjucheng/archi ...
- 火狐浏览器Firefox 如何使用iMacros 自动填写网页表单
1 我们首先访问一个想要自动填写表单的网站.我们以百度为例,右侧有登录窗口. 2 然后我们点开刚安装上的iMacros插件,一般安装之后就会自动出现在浏览器的某个地方,点击记录选项卡,再点击记录. ...
- Lucene中TokenStream,Tokenizer,TokenFilter,TokenStreamComponents与Analyzer
TokenStream extends AttributeSource implements Closeable: incrementToken,end,reset,close Tokenizer直接 ...