目标C中的全球财产

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

typedef enum { CalendarTypeMonth = 0, CalendarTypeWeek } CalendarType; 

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

 @property (nonatomic) CalendarType myCalendarType; 

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

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

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

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

 static MyStaticType staticVar = MyStaticTypeDefault; +(BOOL)myStaticVar { return staticVar; } +(void)setMyStaticVar:(MyStaticType)newValue { staticVar = newValue; } 

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

在[Project Name] _Prefix.pch文件中,您可以添加以下语句:

 #import "Constants.h" 

这样,您将使枚举可用于项目中的每个文件。

编辑:要访问该值,我建议将其作为应用程序委托的全局属性。 为了更进一步,您可以使应用程序使用类别委托NSObject的方法,因此它可能看起来像:

 CalendarType current = [self appDelegate].currentCalendarType 

注意您的属性现在是全局可获取/可设置属性。