Objective C - 每个View Controller的全局变量

Ema*_*ere 1 xcode objective-c viewcontroller ios

我正在学习Objective C&Xcode,通过我的第一个应用程序.首先,用户必须登录.然后他可以做几件事,比如加入团队或更改他的数据(用户名,电子邮件......).

登录完成,它工作正常.对于这个问题:

是否可以设置一个我可以从每个View Controller获得的变量?

我尝试使用segues,但我认为在每个View Controller中定义它都非常困难.

我正在寻找一个全局变量,我可以从应用程序的任何地方到达,这可能吗?或者还有其他方法可以解决这个问题吗?

感谢您的帮助!伊曼纽尔

Har*_*LEY 9

我个人建议你使用Singleton模式.
我不建议把所有内容都放到AppDelegate中,这个类不适用于此类.

相反,你可以做的是创建一个专用类(名称类似"ApplicationState",或任何适合你的人),并将所需的属性放在其头文件中,并在.m中使用单例管理代码(和标题中的原型)

如果您需要单例管理代码,请执行以下操作:

+ (ApplicationState*)sharedInstance
{
    static ApplicationState* sharedInstance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedInstance = [[self alloc] init];
    });
    return sharedInstance;
}
Run Code Online (Sandbox Code Playgroud)

然后,如果你在标题中:

@property (nonatomic, strong) NSObject* object;

+ (ApplicationState*)sharedInstance;
Run Code Online (Sandbox Code Playgroud)

您可以通过包含ApplicationState头文件从任何地方获取此变量,并调用:

[[ApplicationState sharedInstance] object];
Run Code Online (Sandbox Code Playgroud)