尝试访问应用程序委托变量/属性

Bry*_*yan 3 delegates global-variables objective-c

我正在使用我的应用程序委托的变量/属性作为全局.(我不想处理单身类.)

我正在尝试在Application Delegate类中编写#define语句.如果我输入:

  [UIApplication sharedApplication]
Run Code Online (Sandbox Code Playgroud)

在我的app委托类中,代码提示无法识别sharedApplication.但是如果我在viewController类中键入相同的内容,"sharedApplication"会弹出.

为了在我的applicationDelegate.h(或.m?)中定义NSMutableDictionary,我写道:

#define MyDictionary [[[UIApplication sharedApplication] delegate] stateDictionary]
Run Code Online (Sandbox Code Playgroud)

然后,如果我尝试在另一个类中使用它:

[[MyDictionary objectForKey:@"California"] largestCity];
Run Code Online (Sandbox Code Playgroud)

我得到一个错误,必须首先声明MyDictionary.我对这里的很多概念感到困惑.

Rud*_*udi 8

我很确定有人会更好地回答这个问题,但这里有一个很快的问题:

假设您的应用程序名为myApplication.将"global"属性分配给MyApplicationDelegate,然后可以从以下任何位置访问它:

// get reference to app delegate
MyApplicationDelegate *appDelegate = (MyApplicationDelegate *)[[UIApplication sharedApplication] delegate]

Property *myProperty = appDelegate.property;
Run Code Online (Sandbox Code Playgroud)

此外,请确保链接到标头中的MyApplicationDelegate文件:

#import "MyApplicationDelegate.h"
Run Code Online (Sandbox Code Playgroud)

如果使用"全局"对象一般是好的设计,那么会有更长的争论,但我现在不会讨论这个问题.