单例模式在Cocoa中非常常见。按照习惯,你可以通过一个以shared
开头的类方法识别它。
单例往往用于业务层对象,就如同前面所说的CALayoutManager
类一样。
单例往往会伴随着线程安全问题,可以在+sharedSingleton
中添加一个@synchronize
以达到线程安全的目的,但这样就会使用到同步对象,性能会产生问题。
建议通过GCD内置的dispatch_once方法、速度快,而且线程安全。
//
// ZQKSingleton.h
// FFFFFF
//
// Created by laouhn on 15/12/22.
// Copyright (c) 2015年 宇哥. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface ZQKSingleton : NSObject
+ (ZQKSingleton *)sharedSingleton;
@end
//
// ZQKSingleton.m
// FFFFFF
//
// Created by laouhn on 15/12/22.
// Copyright (c) 2015年 宇哥. All rights reserved.
//
#import "ZQKSingleton.h"
@implementation ZQKSingleton
+ (ZQKSingleton *)sharedSingleton{
static ZQKSingleton *zqk = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
zqk = [ZQKSingleton new];
});
return zqk;
}
@end