在iOS应用程序中声明全局variables的最佳做法是什么?

假设我有一个UIColor ,我想跨越每个视图控制器来使用它的标题/导航栏。 我想知道什么是最好的方式来宣布这样的财产。 我是否应该将其声明为应用程序委托的成员? 为全局属性创build一个模型类,并声明一个静态函数+ (UIColor)getTitleColor ? 将UIColor对象传递给每个视图控制器? 还有另一种我没有描述的方法,被认为是最好的方法呢?

有很多方法可以做到这一点。 我喜欢通过在UIColor上添加一个类别来实现:

的UIColor + MyAppColors.h

 @interface UIColor (MyAppColors) + (UIColor *)MyApp_titleBarBackgroundColor; @end 

的UIColor + MyAppColors.m

 #import "UIColor+MyAppColors.h" @implementation UIColor (MyAppColors) + (UIColor *)MyApp_titleBarBackgroundColor { static UIColor *color; static dispatch_once_t once; dispatch_once(&once, ^{ color = [UIColor colorWithHue:0.2 saturation:0.6 brightness:0.7 alpha:1]; }); return color; } @end 

然后,我可以通过在需要标题栏背景色的任何文件中导入UIColor+MyAppColors.h来使用它,并像下面这样调用它:

 myBar.tintColor = [UIColor MyApp_titleBarBackgroundColor]; 

通过你想要做的事情,我认为你可以通过使用外观更容易。 您可以为所有不同types的界面元素分配不同的颜色。 查看UIAppearance协议了解更多信息。

如果这不是你想要的,那么我会build议@rob mayoff回答:使用一个类别。