单例类

什么是单例类?

无论应用程序请求多少次,单例类都会返回相同的实例。与常规类不同,单例对象提供对其类资源的全局访问点。

何时使用 Singleton 类?

单例人员用于需要这个单一控制点的情况,例如提供一些一般服务或资源的类。

如何创建单例类

首先,创建一个新文件并从 NSObject 继承它。把它命名为什么,我们将在这里使用 CommonClass。Xcode 现在将为你生成 CommonClass.h 和 CommonClass.m 文件。

在你的 CommonClass.h 文件中:

#import <Foundation/Foundation.h>

@interface CommonClass : NSObject {
}
+ (CommonClass *)sharedObject;
@property NSString *commonString;
@end

在你的 CommonClass.m 文件中:

#import "CommonClass.h"

@implementation CommonClass

+ (CommonClass *)sharedObject {
    static CommonClass *sharedClass = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedClass = [[self alloc] init];
    });
    return sharedClass;
}

- (id)init {
    if (self = [super init]) {
        self.commonString = @"this is string";
    }
    return self;
}

@end

如何使用 Singleton 类

只要你在相关模块中导入了 CommonClass.h 文件,我们之前创建的 Singleton 类就可以从项目的任何位置访问。要修改和访问 Singleton 类中的共享数据,你必须访问该类的共享对象,可以使用 sharedObject 方法访问该对象,如下所示:

[CommonClass sharedObject]

要读取或修改共享类中的元素,请执行以下操作:

NSString *commonString = [[CommonClass sharedObject].commonString; //Read the string in singleton class

NSString *newString = @"New String";
[CommonClass sharedObject].commonString = newString;//Modified the string in singleton class