swift语法-14单例

2016-03-12  本文已影响36人  20b347b28fc9

swift语法-14单例


OC中单例
+ (instancetype)shareNetworkTools{
    static NetworkTools *_instance;
    // onceToken默认等于0, 只要执行一次之后就不等于0了, 原理是通过判断onceToken是否等于0决定是否需要执行block
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        
        _instance = [[NetworkTools alloc] init];
    });
    return _instance;
}
Swift中单例
class NetworkTools: NSObject {
    
    static var onceToken: dispatch_once_t = 0
    static var _instance:NetworkTools?
    
    //class func  相当于OC中的 +开头类方法
    class func sharedNetworkTools()->NetworkTools{
        dispatch_once(&NetworkTools.onceToken) { () -> Void in
            
            _instance = NetworkTools()
        }
        return _instance!
    }
}

简写

class NetworkTools: NSObject {
    
    static let _instance:NetworkTools = NetworkTools()
    
    //class func  相当于OC中的 +开头类方法
    class func sharedNetworkTools()->NetworkTools{
        return _instance
    }
}

Swift中最长用的方法

class NetworkTools: NSObject {
    // 如果在Swift中编写单例, 推荐使用如下写法
    //苹果有统一的命名规范, 但凡是单例统一是用shareInstance
    static let shareInstance: NetworkTools = NetworkTools()
}
上一篇 下一篇

猜你喜欢

热点阅读