單例類

什麼是單例類?

無論應用程式請求多少次,單例類都會返回相同的例項。與常規類不同,單例物件提供對其類資源的全域性訪問點。

何時使用 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