2012-03-16 49 views
-2

我想創建一個全局變量(基本上是一個標誌變量),它可以被Objective C中的任何類修改和訪問?任何例子都表示讚賞。可以被任何類訪問的全局變量

+6

你甚至沒有考慮過使用谷歌搜索,你呢? – PengOne 2012-03-16 16:15:46

+0

將屬性添加到您的應用程序委託。 – Jeremy 2012-03-16 16:16:59

+0

[Objective-C中的全局變量]的可能重複(http://stackoverflow.com/questions/1113980/global-variables-in-objective-c)以及http://stackoverflow.com/questions/5098990/ in-objective-c-how-do-you-declare-use-a-global-variable,http://stackoverflow.com/questions/7081245/global-variables-in-xcode和http://stackoverflow.com/questions/3601341/iphone-global-variable – 2012-03-16 16:38:49

回答

1

請記住,Objective-C在封面下運行良好的舊「C」。因此,您可以像在C中一樣在Objective-C中創建全局變量。

1

選中此項。在appname.pch文件中導入一些類,比如應用程序委託,因爲它很容易從應用程序單例訪問。有添加紙條像

#define MY_APP_DELEGATE (((MYAppDelegate *)[UIApplication sharedApplication].delegate)) 

,並從任何類使用委託變量是這樣的:

int val1 = MY_APP_DELEGATE.myvar; 
MY_APP_DELEGATE.myvar = 1; 
2

目標C是ANSI C嚴格的超集,所以用來創建和使用步驟在目標C中可以使用普通的C全局變量。

在任何類接口,方法或子例程範圍之外的完全一個.m文件中,聲明或實例化全局變量(並在不需要時初始化它以垃圾值開始):

BOOL myGlobalFlag = NO; 

爲了使這些全局變量很容易找到(您可能需要找到它們,因爲使用全局變量被認爲會涉及某些類型的錯誤的風險較高),將它們放在頂部在任何需要包含的文件之後。或者把所有的全局變量放在一個容易找到的中心文件中,比如App Delegate,包含main()的文件或者只包含所有全局變量的文件,比如項目中包含的my_apps_globals.c。

在屬於您要訪問此變量的任何類,.M,或.c文件至少一個.h文件中,任何類的接口或結構定義之外,聲明該變量爲外部訪問:

extern BOOL myGlobalFlag; 

然後在你的應用程序的任何位置使用包含上述任何頭文件的任何方法或子例程中的變量。

-(void)dummyMethod { 
    if (myGlobalFlag) NSLOG(@"the Flag is set!!!"); 
}