单例各种写法

1.  + (id)sharedInstance
{
    static dispatch_once_t once = 0; //被访问次数 当访问一次的时候 下次就不在访问了
    __strong static id _sharedObject = nil;
    dispatch_once(&once, ^{
        _sharedObject = [[self alloc] init];
    });
    return _sharedObject;
}

2.

 static AccountManager *DefaultManager = nil;  

+ (AccountManager *)defaultManager {
@synchorzied(self){
//线程安全  但是访问次数多的话   会 效率低下
    if (!DefaultManager) DefaultManager = [[self allocWithZone:NULL] init];
    return DefaultManager;
}
}  
时间: 2024-10-21 17:56:40

单例各种写法的相关文章

Swift单例的写法

Swift单例的写法 by 伍雪颖 override func viewDidLoad() { super.viewDidLoad() let instance = SingletonClass.shared } class SingletonClass { class var shared: SingletonClass { struct Static { static let instance: SingletonClass = SingletonClass() } return Stati

单例的写法

1. #import "MySingleton.h" static MySingleton *_singleton = nil; + (id)shareObject { @synchronized(self){ if (_singleton == nil) { _singleton = [[MySingleton alloc] init]; } } return _singleton; } @end @synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象

Swift2.0单例的写法

在网上找到了三种写法,都跟 struct 有关系,也许是 Swift1.0的写法吧.不过现在已经到了 Swift2.0 的时代,我在这里提供一种更加简单的单例写法.管用! 先看例子: import Foundation public class SwiftSingleton{     var name = "000"     public static let instance = SwiftSingleton() //这个位置使用 static,static修饰的变量会懒加载    

基于unity的单例设计模式写法

设计模式有23中,都是为了解藕设计的.就先拿单例设计模式说说把.因为平常最起码你也得用到单例设计先弄一个泛型的单例模板代码如下: 1 //泛型的单例设计模式.项目中用的多 2 public class GameController<T> : MonoBehaviour where T :GameController<T> { 3 private static T _instance; 4 public static T Instance 5 { 6 get 7 { 8 if (_i

iOS 标准单例的写法

- (single *)getSingle{ static single *s=nil; static dispatch_once_t t; dispatch_once(&t, ^{ s=[[single alloc]init]; }); return s; }

IOS_地图_定位_天气预报_Block回调_单例

H:/1021/00_block回调.h /* 通过block回调 定义block代码块,目的是解析完成之后调用 返回值是 void 参数是 数组,里面的每个成员是一个NSString*/ typedef void(^WeatherFinishedBlock)(NSArray *dataList); @interface WeatherXMLPaser : NSObject // 解析器解析数据,参数1是要解析的数据,参数2是解析完毕回调的代码块 - (void)parserWeatherDat

iOS单例创建的一点疑惑

线程安全的单例常用写法, +(AccountManager *)sharedManager{ static AccountManager *defaultManager = nil; disptch_once_t once; disptch_once(&once,^{ defaultManager = [[self alloc] init]; }); return defaultManager; } 在用的过程中,有点疑惑的点是:static AccountManager *defaultMan

(Object-C)学习笔记 --OC的懒加载和单例方法

OC的懒加载 什么是懒加载: 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化. 懒加载的好处 (1)不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强 (2)每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合 懒加载的例子: #import "MusicTableViewController.h&quo

Javascript 设计模式 单例 http://blog.csdn.net/lmj623565791/article/details/30490955/

转载请标明出处:http://blog.csdn.NET/lmj623565791/article/details/30490955 一直很喜欢Js,,,今天写一个Js的单例模式实现以及用法. 1.单例模式的写法 单例模式写法相当简单: [javascript] view plain copy var singleTon = { m1: "memeber first ", m2: "memeber second ", f1: function () { consol