目标C中的全球财产

NSE*_*rer 2 global-variables objective-c ios

我有这样一种在Constants.h文件中定义的枚举:

typedef enum {
    CalendarTypeMonth = 0,
    CalendarTypeWeek
} CalendarType;
Run Code Online (Sandbox Code Playgroud)

然后在我的视图控制器中,我确定日历类型应该是什么,并以这种方式将其存储在属性中:

@property (nonatomic) CalendarType myCalendarType;
Run Code Online (Sandbox Code Playgroud)

现在我希望项目中的所有类都可以访问日历类型.如何将此属性设置为global/extern,以便所有类都可以读取此内容?

编辑:我知道整个项目将提供枚举的定义.但我感兴趣的是价值myCalendarType.如何在所有类中访问myCalendarType的值?

Nik*_*nko 10

您可以声明类方法来访问静态变量.

将此类代码添加到您的实现文件中:

static MyStaticType staticVar = MyStaticTypeDefault;

+(BOOL)myStaticVar
{
    return staticVar;
}

+(void)setMyStaticVar:(MyStaticType)newValue
{
    staticVar = newValue;
}
Run Code Online (Sandbox Code Playgroud)

并在接口文件中为此方法创建声明.这比将所有静态值移动到AppDelegate要好得多.无论如何,很多变种都是可能的 - 例如,你可以创建单一的来存储一些应用程序设置或使用CoreData.