一千萬個為什麽

搜索

Objective-C:靜態字段和實現單例模式

美好的一天,朋友們。

再一次關於新手的Obj-C的愚蠢問題:)

我正在嘗試在Obj-C中實現單例設計模式:

@interface SampleSingleton : NSObject {
@private
    static SampleSingleton* instance;
}
+(SampleSingleton*) getInstance;

編譯器返回錯誤:“在'靜態'之前的預期說明符 - 限定符列表”。

最佳答案

您不能在類接口聲明中使用static。單例應該在 .m 文件中聲明為靜態獨立變量。我通常這樣做(如果我覺得我不能避免單身):

@interface SampleSingleton : NSObject 
{
@private
}

+(SampleSingleton*) theSingleton;

@end

// .m file 

@implementation SampleSingleton

+(SampleSingleton*) theSingleton
{
    static SampleSingleton* theSingleton = nil;

    if (theSingleton  == nil)
    {
        theSingleton = [[SampleSingleton alloc] init];
    }
    return theSingleton;
}

轉載註明原文: Objective-C:靜態字段和實現單例模式