单例模式

单例模式1

//当前用的最多的方法,高大上 GCD
+(instancetype)sharePerson
{
    static Person *p = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        
        //这里代码只会被初始化一次
        p = [[Person alloc]init];
    });
    return p;
}

单例模式2

+(JYGHMainManager *)sharedMainManager
{
    static JYGHMainManager *shareRootMainManager = nil;

    @synchronized(self)
    {
        if(shareRootMainManager == nil)
        {
            shareRootMainManager = [[self alloc] init];
        }
    }
    return shareRootMainManager;
}

你可能感兴趣的:(单例模式)