OC基础 单例

#undef  AS_SINGLETON  
    #define AS_SINGLETON( __class ) \  
            + (__class *)sharedInstance;  
          
        #undef  DEF_SINGLETON  
        #define DEF_SINGLETON( __class ) \  
                + (__class *)sharedInstance \  
                { \  
                    static dispatch_once_t once; \  
                    static __class * __singleton__; \  
                   dispatch_once( &once, ^{ __singleton__ = [[__class alloc] init]; } ); \  
                    return __singleton__; \  
            }  

上面是用宏来定义单例。

 

下面介绍我们常用的两种单例的写法:

第一种

static SingleClass *single = nil;
+ (id)shareInstance {
    if(!single)
    {
        single = [[SingleClass alloc] init];
    }
    return single;
}

 

第二种

+ (id)shareInstance
{
    static SingleClass *single = nil;
    static dispatch_once_t predicate;
    dispatch_once(&predicate, ^{
        single = [[self alloc] init];
    });
    return single;
}

 

posted on 2015-10-13 16:40  卡丁车h  阅读(220)  评论(0编辑  收藏  举报

导航