2014-02-16 134 views
0

我必須在所有類之間共享很多靜態NSString。 我想使用一個單身人士。使用單例實現共享數據

我已經試過這單:

static GlobalData *sharedSingleton = NULL; 

    + (GlobalData *)sharedGlobals 
    { 
     @synchronized(self) 
     { 
      if (sharedSingleton == NULL) 
       sharedSingleton = [[self alloc] init]; 
     } 

     //should i put a nsstring here ?    

     return(sharedSingleton); 
    } 

我的問題是,你在哪裏設置我的靜態NSStrings又如何呢?

+0

'GlobalData'與靜態'NSString'有什麼關係? – user3125367

回答

0

您可以像設置普通類一樣設置靜態字符串,這意味着您可以在@interface中聲明它們,並且可以在單例初始化程序中初始化它們。一個單例與任何對象的使用都完全相同,只是您只有一個單例(由靜態變量sharedSingleton監視)。另外,如果您使用的是來自多個對象的相同字符串,並且在應用程序的生命週期中它們保持不變,那麼您可以考慮使用#define將字符串聲明爲常量。

編輯 的聲明應該是這樣的

@interface GlobalData 
@property NSString *myString; 
... 
@end 

從你的代碼的任何部分。

NSLog(@"%@", [[GlobalData sharedGlobals] myString]; 
+0

謝謝,但如果我在界面中照常設置一個字符串,我沒有看到從外面使用[globalData sharedGlobals] .string – Curnelious

+0

@Curnelious下襬請顯示更多的代碼,你不明白你的意思是'設置一個字符串爲通常在界面中「。 – user3125367

+0

看到編輯答案 – Merlevede