美文网首页
iOS创建单例

iOS创建单例

作者: iOS小洁 | 来源:发表于2023-03-07 21:36 被阅读0次

    OC单例

    避免调用alloc创建新的对象

    避免copy创建新的对象

    + (id)sharedInstance
    {
        // 静态局部变量
        static Singleton *instance = nil;
        
        // 通过dispatch_once方式 确保instance在多线程环境下只被创建一次
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            // 创建实例
            instance = [[super allocWithZone:NULL] init];
        });
        return instance;
    }
    
    // 重写方法【必不可少】
    + (id)allocWithZone:(struct _NSZone *)zone{
        return [self sharedInstance];
    }
    
    // 重写方法【必不可少】
    - (id)copyWithZone:(nullable NSZone *)zone{
        return self;
    }
    

    Swift 单例

    public class FileManager { 
        public static let shared = FileManager() 
        private init() {    } 
    }
    
    public class FileManager {
        public static let shared = {
        // ....
        // ....
        return FileManager() 
      }() 
      private init() { }
    }
    

    相关文章

      网友评论

          本文标题:iOS创建单例

          本文链接:https://www.haomeiwen.com/subject/pnhnldtx.html