zoukankan      html  css  js  c++  java
  • iOS单例宏

    //
    //  Single.h
    //  FKLTest
    //
    //  Created by kun on 16/8/11.
    //  Copyright © 2016年 kun. All rights reserved.
    //
    
    #ifndef Single_h
    #define Single_h
    
    #define SingelH(name) +(instancetype)share##name;
    
    #if __has_feature(objc_arc) // 条件编译 ARC
    #define SingelM(name) static id share##name = nil;
    + (instancetype)allocWithZone:(struct _NSZone *)zone
    {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    if ( !share##name )
    {
    share##name = [super allocWithZone:zone];
    }
    });
    return share##name;
    }
    + (instancetype)share##name
    {
    return [[self alloc] init];
    }
    - (id)copyWithZone:(NSZone *)zone
    {
    return share##name;
    }
    - (id)mutableCopyWithZone:(NSZone *)zone
    {
    return share##name;
    }
    #else // 条件编译 MRC
    #define SingelM(name) static id share##name = nil;
    + (instancetype)allocWithZone:(struct _NSZone *)zone
    {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    if ( !share##name )
    {
    share##name = [super allocWithZone:zone];
    }
    });
    return share##name;
    }
    + (instancetype)share##name
    {
    return [[self alloc] init];
    }
    - (id)copyWithZone:(NSZone *)zone
    {
    return share##name;
    }
    - (id)mutableCopyWithZone:(NSZone *)zone
    {
    return share##name;
    }
    - (oneway void)release
    {
    }
    - (instancetype)retain
    {
        return shared##name;
    }
    - (NSUInteger)retainCount
    {
        return MAXFLOAT;
    }
    #endif // 条件编译
    
    #endif /* Single_h */
  • 相关阅读:
    UVA 562 Dividing coins
    who is in front of me 解题报告
    UVA 111 历史考试
    UVA 1045 最长公共子序列
    HDU 1003 解题报告
    ACM2014-04训练计划
    基于邻接表的新顶点的增加
    4004.六度空间理论
    4003.基于Dijsktra算法的最短路径求解
    4002.基于快排思想的查找
  • 原文地址:https://www.cnblogs.com/fkunlam/p/5760485.html
Copyright © 2011-2022 走看看