zoukankan      html  css  js  c++  java
  • iOs开发 单例模式 省懒宏

    #define singleton_h(name) + (instancetype)shared##name;
    
    #if __has_feature(obj_arc)
    #define singleton_m(name)
    static id _instance;
    + (instancetype)shared##name
    {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    _instance = [[self alloc] init];
    });
    return _instance;
    }
    + (id)allocWithZone:(struct _NSZone *)zone
    {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    _instance = [super allocWithZone:zone];
    });
    return _instance;
    }
    + (id)copyWithZone:(struct _NSZone *)zone
    {
    return _instance;
    }
    
    #else
    #define singleton_m(name)
    static id _instance;
    + (instancetype)shared##name
    {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            _instance = [[self alloc] init];
        });
        return _instance;
    }
    + (id)allocWithZone:(struct _NSZone *)zone
    {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            _instance = [super allocWithZone:zone];
        });
        return _instance;
    }
    + (id)copyWithZone:(struct _NSZone *)zone
    {
        return _instance;
    }
    
    - (oneway void)release
    {
    }
    - (id)autorelease
    {
        return _instance;
    }
    - (id)retain
    {
        return _instance;
    }
    - (NSUInteger)retainCount
    {
        return 1;
    }
    #endif
    
  • 相关阅读:
    HDU4714+三分
    HDU1465+递推
    HDU1437+模拟
    HDU1796+容斥原理
    HDU1432+几何
    Linux---Ls命令 初级实现
    HDU1411+四面体的体积
    HDU1412
    HDU1431+简单题
    请定义一个交通工具(Vehicle)的类,其中有: 属性:速度(speed),体积(size)等等
  • 原文地址:https://www.cnblogs.com/dyf520/p/3809302.html
Copyright © 2011-2022 走看看