• 单例的宏定义实现-07-GCD


     1 //
     2 //  LYHSingleTon.h
     3 //  07-单例的宏定义实现
     4 //
     5 //  Created by mac on 16/4/22.
     6 //  Copyright © 2016年 mac. All rights reserved.
     7 //
     8 
     9 #ifndef LYHSingleTon_h
    10 #define LYHSingleTon_h
    11 
    12 // .h文件
    13 
    14 #define LYHSingleTonH + (instancetype)sharedInstance;
    15 
    16 // .m文件
    17 
    18 #define LYHSingleTonM 
    19 /**
    20  *  1. 创建一个全局变量,作用域比较广泛,所有的文件中都能够访问
    21  */
    22 id _instance;
    23 
    24 /**
    25  *  2. 重写allocWithZone:只分配一次内存
    26  */
    27 + (instancetype)allocWithZone:(struct _NSZone *)zone {
    28     
    29     static dispatch_once_t onceToken;
    30     dispatch_once(&onceToken, ^{
    31         _instance = [super allocWithZone:zone];
    32     });
    33     return _instance;
    34 }
    35 /**
    36  *  3. 既保证了单例(只分配一次内存),又保证了只init一次;
    37  */
    38 + (instancetype)sharedInstance {
    39     
    40     static dispatch_once_t onceToken;
    41     dispatch_once(&onceToken, ^{
    42         _instance = [[self alloc] init];
    43     });
    44     return _instance;
    45 }
    46 /**
    47  *  4. 重写copy方法
    48  */
    49 - (id)copyWithZone:(NSZone *)zone {
    50     
    51     return _instance;
    52 }
    53 
    54 /**
    55  *  下面是不添加注释的宏定义
    56  */
    57 ///*
    58  
    59 #define LYHSingleTonM 
    60 id _instance;
    61 
    62 + (instancetype)allocWithZone:(struct _NSZone *)zone {
    63 
    64 static dispatch_once_t onceToken;
    65 dispatch_once(&onceToken, ^{
    66 _instance = [super allocWithZone:zone];
    67 });
    68 return _instance;
    69 }
    70 
    71 + (instancetype)sharedMusicTool {
    72 
    73 static dispatch_once_t onceToken;
    74 dispatch_once(&onceToken, ^{
    75 _instance = [[self alloc] init];
    76 });
    77 return _instance;
    78 }
    79 
    80 - (id)copyWithZone:(NSZone *)zone {
    81 
    82 return _instance;
    83 }
    84  
    85 */
    86 
    87 #endif /* LYHSingleTon_h */
    时光见证了成长,还很无知,我想一点点幼稚转为有知!
  • 相关阅读:
    FPGA+ADV7511实现HDMI显示
    【转载】ZYNQ Cache问题的解决方法
    FPGA控制RGMII接口PHY芯片基础
    【转载】linux 压缩和解压缩命令gz、tar、zip、bz2
    python中正则表达式与模式匹配
    【转载】数字IC设计流程及开发工具
    Linux基本操作——文件相关
    数字信号处理专题(3)——FFT运算初探
    C++基础——类继承中方法重载
    C++基础——类继承
  • 原文地址:https://www.cnblogs.com/foreveriOS/p/5421227.html
Copyright © 2020-2023  润新知