2012-10-16 58 views
0

在我的應用程序中有很多視圖控制器在某些視圖控制器中有一些變量在那裏,我想在其他類中使用.my變量不存在於應用程序委託文件中,所以我可以我把它全球化使用我的應用程序中的每個地方?在應用程序中創建一個類變量global

+0

是你可以從appDelegate訪問的viewController ..? – vishy

回答

1

在我看來,如何使用單身模式?所以當你想使用這個類的變量時,只需要獲取實例,然後使用變量。

@interface MySingletonViewController : UIViewController 
{ 
    //here your variables 
    int globalVariables; 
} 
@property (nonatomic, assign) int globalVariables; 
+ (MySingletonViewController *)sharedSingleton; 
@end 

@implementation MySingletonViewController 
@synthesize globalVariables; 
static MySingletonViewController *sharedSingleton = nil; 
+ (MySingletonViewController *)sharedSingleton 
{ 
    @synchronized(self) 
    { 
    if (sharedSingleton == nil) 
     sharedSingleton = [[MySingleton alloc] init]; 

    return sharedSingleton; 
    } 
} 

@end 

UIViewController實際上是類,所以我們可以這樣做:)希望這有幫助。

+0

我認爲通過+(MySingletonViewController *)sharedSingleton控制UIViewController生命週期不是個好主意。更好的方法是使用獨立的選項,這在整個應用程序中都是有用的。 – Orange

1

當然你可以,但通過整個應用程序使用全局變量肯定是壞的架構設計。

MyVeryOwnClass *g_MyVeryOwnClassPointer = nil; 

,並獲得它:

之外實現部分在任何* .m文件 - (指針類在你的情況下)爲

由於基於C的Objective-C,你可以定義變量

extern MyVeryOwnClass *g_MyVeryOwnClassPointer; 
/* do some operations with your pointer here*/ 

或將extern聲明移動到頭文件。

PS:您可以使用單身。它們不是最好的解決方案,但是使用原始變量會更好。