单例类
什么是单例类?
无论应用程序请求多少次,单例类都会返回相同的实例。与常规类不同,单例对象提供对其类资源的全局访问点。
何时使用 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