iOS快速創建單例

單例源代碼
Singleton.h

// .h
#define singleton_interface(class) + (instancetype)shared##class;

// .m
#define singleton_implementation(class) \
static class *_instance; \
\
+ (id)allocWithZone:(struct _NSZone *)zone \
{ \
    static dispatch_once_t onceToken; \
    dispatch_once(&onceToken, ^{ \
        _instance = [super allocWithZone:zone]; \
    }); \
\
    return _instance; \
} \
\
+ (instancetype)shared##class \
{ \
    if (_instance == nil) { \
        _instance = [[class alloc] init]; \
    } \
\
    return _instance; \
}

使用方法:
創建一個你想使用單例的類,例如UserInfo
這裏寫圖片描述

UserInfo.h

#import <Foundation/Foundation.h>
#import "Singleton.h"
@interface UserInfo : NSObject

singleton_interface(UserInfo);

@property (nonatomic, copy) NSString *userName;//用戶名
@property (nonatomic, copy) NSString *password;//密碼

@end

UserInfo.m

#import "UserInfo.h"

@implementation UserInfo

singleton_implementation(UserInfo)

@end

在需要使用單例的地方只需調用“sharedclass”方法

UserInfo *userInfo = [UserInfo sharedUserInfo];
userInfo.userName = _userName.text;
userInfo.password = _password.text;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章