在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回答:使用一个类别。