IOS单例模式推荐写法(转载)

 1 +(instancetype)sharedUserLoginModel{
 2
 3     static YLWUserLoginModel *instance;
 4
 5     static dispatch_once_t onceToken;
 6
 7     dispatch_once(&onceToken, ^{
 8
 9         instance = [[YLWUserLoginModel alloc]init];
10
11     });
12     return instance;
13
14 }

这种写法的好处是:

1. 线程安全。

2. 满足静态分析器的要求。

3. 兼容了ARC

总结:1.这个方法可以在创建单例或者某些初始化动作时使用,以保证其唯一性。2.该方法是线程安全的,所以请放心大胆的在子线程中使用。(前提是你的dispatch_once_t *predicate对象必须是全局或者静态对象。这一点很重要,如果不能保证这一点,也就不能保证该方法只会被执行一次。)

转自:http://www.lrdup.net/archives/1034

时间: 2024-10-06 03:45:39

IOS单例模式推荐写法(转载)的相关文章

iOS开发笔记-两种单例模式的写法

iOS开发笔记-两种单例模式的写法 单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h" static ServiceManager *defaultManager; @implementation ServiceManager +(ServiceManager *)defaultManager{ if(!defaultManager) defaultManager=[[self allocWith

设计模式:单例模式的写法(基础写法和线程安全写法)

单例模式的写法非常多.先给出一种最基础的写法: (A种写法): package singleton; public class SingletonInstance { private static SingletonInstance mSingletonInstance = null; // 特意将构造函数设置成 private,防止外部使用者new SingletonInstance(). private SingletonInstance() { } public static Single

IOS单例模式

单例模式是一种常见的软件设计模式. 通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源. 如果希望系统中某个类的对象只能存在一个,单例模式是最好的解决反感. IOS中最常见的单例就是UIApplication 单例的实现步骤: 1.重写allocWithZone方法 allocWithZone方法是对象分配内存空间时,最终会调用的方法,重写该方法,保证只会分配个内存空间. 2.建立shaerdXXX类方法,便于其他类调用 + (id)all

HTML5 声明兼容IE的写法(转载)

HTML5 声明兼容IE的写法(转载) 1 2 3 4 5 6 7 8 9 10 <!DOCTYPE html> <!--[if IE]> <meta http-equiv="X-UA-Compatible" content="IE=8" /> <![endif]--> <!--[if IE 7]> <meta http-equiv="X-UA-Compatible" conten

c++单例模式的写法

c++单例模式 class Singleton { public: static GetInstance(); ~Singleton(); private: Singleton* p_singleton; Singleton(); } 实现 Singleton::Singleton() { }; Singleton::~Singleton() { if(p_singleton) { delete p_singleton; } } Singleton* Singleton::GetInstance

转载:web工程中URL地址的推荐写法

在JavaWeb开发中,只要是写URL地址,那么建议最好以"/"开头,也就是使用绝对路径的方式,那么这个"/"到底代表什么呢?可以用如下的方式来记忆"/":如果"/"是给服务器用的,则代表当前的web工程,如果"/"是给浏览器用的,则代表webapps目录. 1."/"代表当前web工程的常见应用场景 ①.ServletContext.getRealPath(String path)获取

最简单的设计模式——单例模式的演进和推荐写法(Java 版)

前言 如下是之前总结的 C++ 版的:软件开发常用设计模式—单例模式总结(c++版),对比发现 Java 实现的单例模式和 C++ 的在线程安全上还是有些区别的. 概念不多说,没意思,我自己总结就是: 有这样一个类,该类在生命周期内有且只能有一个实例,该类必须自己创建自己的这个唯一实例,该类必须给所有其他对象提供这一实例(提供全局访问点),这样的类就叫单例类. 简单的说就是满足三个条件: 1.生命周期内有且只能有一个实例 2.自己提供这个独一无二的实例 3.该实例必须是能全局访问的 需要的考虑的

php 技巧、高效率写法 推荐(转载+总结)

0.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的"函数"(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号). 1.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍. 2.$row['id'] 的速度是$row[id]的7倍. 3.echo 比 print 快,并且使用echo的多重参数(译注:指用

两种单例模式的写法

iOS的单例模式有两种官方写法,如下: (1)不使用GCD #import "ServiceManager.h" static ServiceManager *defaultManager; @implementation ServiceManager +(ServiceManager *)defaultManager{ if(!defaultManager) defaultManager=[[self allocWithZone:NULL] init]; return default