目标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
注意您的属性现在是全局可获取/可设置属性。