iOS中的单例

fisherMartyn bio photo By fisherMartyn

ios中的单例无处不在,在设计单例的时候需要考虑其他入口拦截等。

在这里把实现的代码记录一下:

头文件:

#import 

@interface MTiMerLogin : NSObject
+(MTiMerLogin *)sharedInstance;
-(MTiMerLogin *)sharedInstance;
@end

实现文件:

#import "MTiMerLogin.h"

@implementation MTiMerLogin
+(MTiMerLogin *)sharedInstance
{
    static MTiMerLogin *singleton;
    static dispatch_once_t singletoken;
    dispatch_once(&singletoken,^{
        singleton = [[self alloc] initSingle];
    });
    return singleton;
}

-(MTiMerLogin *)sharedInstance
{
    return [MTiMerLogin sharedInstance];
}

-(instancetype) initSingle
{
    self = [super init];
    return self;
}

-(instancetype) init
{
    return [MTiMerLogin sharedInstance];
}
@end

需要注意的是,需要重写init来防止对alloc init这种方式的调用。