iOS设计模式-单例

2018-01-02  本文已影响0人  小_黑_屋

直接上代码,后面详解

#import "OCSingleTool.h"

@implementation OCSingleTool

static OCSingleTool * tool = nil;

+ (instancetype)shareTool {
    return [[self alloc]init];
}

+ (instancetype)allocWithZone:(struct _NSZone *)zone {
    if (tool == nil) {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            tool = [super allocWithZone:zone];
        });
    }
    return tool;
}


- (id)copy {
    return tool;
}

- (id)mutableCopy {
    return tool;
}
@end
import UIKit

class SwiftSingleTool: NSObject {
    static let shareTool = SwiftSingleTool()
    private override init() {}
    override func copy() -> Any {
        return SwiftSingleTool.shareTool
    }
    override func mutableCopy() -> Any {
        return SwiftSingleTool.shareTool
    }
}

详解

这里用到了copy,就顺便总结一下
\ 非集合类型(可变) 非集合类型(不可变) 集合类型(可变) 集合类型(不可变)
copy 单层深
mutableCopy 单层深 单层深
上一篇 下一篇

猜你喜欢

热点阅读