单例: GCD

OC

#import <Foundation/Foundation.h>
@interface Student : NSObject
//获取单例对象的第二种方式
+ (instancetype)shareInstance;
@end
#import "Student.h"
@implementation Student
//使用GCD的方式实现单例
//Apple推荐的方式
+ (instancetype)shareInstance {
        static Student *instance = nil;
        static dispatch_once_t onceToken;    
    dispatch_once(&onceToken, ^{        
        instance = [[Student alloc] init];
    });    
    return instance;
}
@end

Swift

import UIKit

//自己使用GCD实现一个单例
class Singleton: NSObject {
    
    class var sharedInstance: Singleton {
        
        struct Static {
            
            static var onceToken: dispatch_once_t = 0
            static var myInstance: Singleton?
        }
        
        dispatch_once(&Static.onceToken) { 
            Static.myInstance = Singleton()
        }
        
        return Static.myInstance!
    }
    

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,261评论 4 61
  • 她就像一个习惯,一个总是可以将生活打理的井然有序有条不紊的习惯,习惯在她眼中是最最自然不过的事儿。每天早晨准点起床...
    别着喇叭的哑巴阅读 277评论 0 2
  • with/as环境管理器 基本使用 with语句实际的工作方式 计算表达式,所得到的对象称为环境管理器,必须有__...
    低吟浅唱1990阅读 616评论 0 0