Objective-C程序中的全局变量

Sha*_*awn 10 variables scope global-variables objective-c

我想存储一个数字作为全局变量.我使用什么语法,以及我的应用程序的其他部分如何访问该变量?

Pey*_*loW 26

对于标准全局变量(在终止并重新启动应用程序时不持久),将其添加到您选择的头文件(*.h)中:

extern NSInteger MYGlobalVariable;
Run Code Online (Sandbox Code Playgroud)

然后把它放在实现文件中; (*.m,*.c,*.cpp):

MYGlobalVariable = 0;  // Or any other default value.
Run Code Online (Sandbox Code Playgroud)

这就是你如何做面包和黄油的全局变量.

  • 您也可以在.h中使用"#define MYGlobalVariable 0"并跳过创建.m. (3认同)

Jul*_*ien 20

您可能希望使用NSUserDefaults:

从代码中的任何位置,您都可以为键设置值:

int userAge = 21; // Just an example

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

if (standardUserDefaults) {
    [standardUserDefaults setObject:[NSNumber numberWithInt:userAge] forKey:@"age"];
    [standardUserDefaults synchronize];
}
Run Code Online (Sandbox Code Playgroud)

并从任何其他地方取回:

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSNumber *age = nil;

if (standardUserDefaults) 
    age = [standardUserDefaults objectForKey:@"age"];

userAge = [age intValue]
Run Code Online (Sandbox Code Playgroud)

您还可以设置初始值:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *appDefaults = [NSDictionary
    dictionaryWithObject:[NSNumber numberWithInt:13] forKey:@"age"];

[defaults registerDefaults:appDefaults];
Run Code Online (Sandbox Code Playgroud)

此外,如果您有复杂的数据,您可能想要创建一个包含setter和getter的包装器类.


Rav*_*eja 14

在AppDelegate.h文件中定义变量.在.h文件中创建一个属性

@property (retain, nonatomic) NSString *str;
Run Code Online (Sandbox Code Playgroud)

然后在AppDelegate.m文件中合成;

@synthesize str;
Run Code Online (Sandbox Code Playgroud)

稍后在项目prefix.pch文件中定义一个变量

#define DELEGATE ((AppDelegate*)[[UIApplication sharedApplication]delegate])
Run Code Online (Sandbox Code Playgroud)

在项目的任何位置使用该值

AppDelegate *a = DELEGATE;
a.str = @"value";
NSLog(@"value of variable str : %@",a.str);
Run Code Online (Sandbox Code Playgroud)