单例模式

原创
2015/12/15 01:04
阅读数 80


OC 的单例写法

+ (instancetype)sharedTools {   

 static id instance;   
  
 static dispatch_once_t onceToken;   
 
  dispatch_once(&onceToken, ^{
  
        instance = [[self alloc] init];
        
    });    return instance;
}
  • Swift 仿 OC 的写法

class SoundTools: NSObject { 
 
  static var instance: SoundTools? 
    
   static var onceToken: dispatch_once_t = 0

    class func sharedSoundTools() -> SoundTools {
    
        dispatch_once(&onceToken) { () -> Void in
        
            instance = SoundTools()
            
        }        return instance!
    }
}

在 Swift 中默认使用项目名称作为类的命名空间,但是在做混合开发时,不允许使用特殊符号,可以参照下图修改

  • 导入头文件

#import "单例测试-Swift.h"

导入头文件的格式是 命名空间-Swift.h

  • Swift 中的单例写法

// Swift 单例写法static let sharedSoundTools = SoundTools()

override init() { 

   print("创建单例!")
}


展开阅读全文
打赏
0
2 收藏
分享
加载中
更多评论
打赏
0 评论
2 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部