使用单例创build一个基本的样式助手类

我是Objective-C的新手,我有一个build筑或devise模式的问题。 我正在构build一个iOS应用程序,并像大多数iOS应用程序,它使用各种颜色,字体,模式等。也许我目前正在写代码不正确,但我发现自己重写像颜色设置的东西。 结果,改变颜色就变成了寻找代码中的所有颜色设置,重写它们等等的运动。对我来说似乎有点低效。

例如,我在我的应用程序的多个地方使用深红色。 我倾向于频繁地写[UIColor colorWithRed …]方法。 但是,我很好奇,如果创build一个返回我自定义颜色(作为UIColor)的单例是一种合理的方法来“模块化我的风格包”。 所以我可以写这样的东西

[label setTextColor:[[MyStyleSingletonClass sharedStyler] myDarkRed]]; 

因此,如果devise师突然想让myDarkRed变得更暗一点,我就改一次,穿过应用程序是很好的。 显然,风格和用户体验比颜色更多,但是我很好奇这种方法是否合理,或者如果我将来会为自己的问题设置自己的话。 或者,也许这种能力已经存在于objective-c中,而我错过了这一点。 提前致谢。

我认为更好的方法是这样的UIColor本身的一类类方法。 我经常为有很多自定义颜色的项目编写颜色类别。

像这样的东西:

 // UIColor+AppAdditions.h @interface UIColor (AppAdditions) + (UIColor *)myDarkRed; @end // UIColor+AppAdditions.m #import "UIColor+AppAdditions.h" @implementation UIColor (AppAdditions) + (UIColor *)myDarkRed { return [UIColor colorWithRed:0.1 green:0.0 blue:0.0 alpha:1.0]; } @end 

这样你就不需要一个完整的Singleton,而且它更便于携带Singleton做其他事情。 你可以像这样干净地访问你的颜色:

 [label setTextColor:[UIColor myDarkRed]]; 

注意

正如罗布和保罗所说的那样。 最好给他们适当的名字。 我采取了你的名字,但最好是命名他们专门用于使用,并遵循约定,如前缀和后缀。

为什么不使用macro

YourHelperClass.h

 #define DARK_RED [UIColor colorWithRed:0.1 green:0.0 blue:0.0 alpha:1.0] 

你可以像这样使用(不要忘记导入YourHelperClass.h ):

 [label setTextColor:DARK_RED]; 

我认为这是更好的使用macro