zoukankan      html  css  js  c++  java
  • IOS 单例模式(非ARC)

     singleton_h :连接字符串和参数

    // ## : 连接字符串和参数
    #define singleton_h(name) + (instancetype)shared##name;
    
    #define singleton_m(name) 
    static id _instance; 
    + (id)allocWithZone:(struct _NSZone *)zone 
    { 
        static dispatch_once_t onceToken; 
        dispatch_once(&onceToken, ^{ 
            _instance = [super allocWithZone:zone]; 
        }); 
        return _instance; 
    } 
     
    + (instancetype)shared##name 
    { 
        static dispatch_once_t onceToken; 
        dispatch_once(&onceToken, ^{ 
            _instance = [[self alloc] init]; 
        }); 
        return _instance; 
    } 
     
    - (oneway void)release 
    { 
     
    } 
     
    - (id)autorelease 
    { 
        return _instance; 
    } 
     
    - (id)retain 
    { 
        return _instance; 
    } 
     
    - (NSUInteger)retainCount 
    { 
        return 1; 
    } 
     
    + (id)copyWithZone:(struct _NSZone *)zone 
    { 
        return _instance; 
    }
    View Code

    调用单例模式  Singleton.h /.m

    #import <Foundation/Foundation.h>
    #import "Singleton.h"
    
    @interface HMMainTool : NSObject
    singleton_h(MainTool)
    @end
    View Code
    #import "HMMainTool.h"
    
    @implementation HMMainTool
    singleton_m(MainTool)
    @end
    View Code

    调用类

    #import "HMViewController.h"
    #import "HMAudioTool.h"
    #import "HMNetTool.h"
    #import "HMMainTool.h"
    
    @interface HMViewController ()
    
    @end
    
    @implementation HMViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        HMAudioTool *audio1 = [[HMAudioTool alloc] init];
        HMAudioTool *audio2 = [HMAudioTool sharedAudioTool];
        NSLog(@"1111%p %p", audio1, audio2);
        
        HMNetTool *net1 = [[HMNetTool alloc] init];
        HMNetTool *net2 = [HMNetTool sharedNetTool];
        NSLog(@"2222%p %p", net1, net2);
        
        HMMainTool *main1 = [[HMMainTool alloc] init];
        HMMainTool *main2 = [HMMainTool sharedMainTool];
        NSLog(@"333%p %p", main1, main2);
    }
    
    @end
    View Code
  • 相关阅读:
    Title
    Title
    Title
    Title
    Title
    Title
    Title
    get和post两种表单提交方式的区别
    计算机网络体系结构补充内容
    计算机网络体系结构作业题整理-第十章答案
  • 原文地址:https://www.cnblogs.com/liuwj/p/6604649.html
Copyright © 2011-2022 走看看