zoukankan      html  css  js  c++  java
  • 单例模式ARC和非ARC

    ARC环境下的单例模式:

    static id _instance = nil; 
    + (id)allocWithZone:(struct _NSZone *)zone 
    { 
        if (_instance == nil) { 
             
            static dispatch_once_t onceToken; 
             
            dispatch_once(&onceToken, ^{ 
                _instance = [super allocWithZone:zone]; 
            }); 
             
        } 
         
        return _instance; 
         
    } 
     
    - (id)init 
    { 
         
        static dispatch_once_t onceToken; 
        dispatch_once(&onceToken, ^{ 
            _instance = [super init]; 
        }); 
        return _instance; 
    } 
     
    + (instancetype)sharedMethodName
    { 
        return [[self alloc] init]; 
    }

    非ARC模式下的单例模式:

    static id _instance = nil; 
    + (id)allocWithZone:(struct _NSZone *)zone 
    { 
        if (_instance == nil) { 
             
            static dispatch_once_t onceToken; 
             
            dispatch_once(&onceToken, ^{ 
                _instance = [super allocWithZone:zone]; 
            }); 
             
        } 
         
        return _instance; 
         
    } 
     
    - (id)init 
    { 
         
        static dispatch_once_t onceToken; 
        dispatch_once(&onceToken, ^{ 
            _instance = [super init]; 
        }); 
        return _instance; 
    } 
     
    + (instancetype)sharedMethodName
    { 
        return [[self alloc] init]; 
    } 
     
    - (oneway void)release 
    { 
         
    } 
     
    - (id)retain 
    { 
        return self; 
    } 
     
    - (NSUInteger)retainCount 
    { 
        return 1; 
    }

    如何判断当前的环境是arc还是非arc  可以这样写:

    #if __has_feature(objc_arc)  //是arc

    //这里写arc下的代码

    #else           //非arc

    //这里写非acr下的代码

    #endif

  • 相关阅读:
    tomcat 7服务器跨域问题解决
    logstash 改变行分割符
    logstash 编码转换默认UTF8
    GIT常用命令
    GIT常用命令
    GIT常用命令
    介绍开发流程以及相关技术
    介绍开发流程以及相关技术
    介绍开发流程以及相关技术
    介绍开发流程以及相关技术
  • 原文地址:https://www.cnblogs.com/syios/p/4797783.html
Copyright © 2011-2022 走看看