应用程序范围的变量和帮助程序

时间:2010-04-26 15:53:45

标签: iphone

我确信这个问题很容易回答......有没有办法让iPhone上的变量和帮助程序在应用程序范围内可用,而不使用Application委托?

谢谢!

------------编辑------------

感谢您的帮助。你的评论有帮助!这就是我实现我的解决方案......

的UIColor + Helpers.h:

#import <Foundation/Foundation.h>

@interface UIColor (Helpers) 
+ (UIColor *)getHexColorWithRGB:(NSString *)rgb alpha:(float)theAlpha;
@end

的UIColor + Helpers.m

#import "UIColor+Helpers.h"
@implementation UIColor (Helpers)

+ (UIColor *)getHexColorWithRGB:(NSString *)rgb alpha:(float)theAlpha {
    unsigned int red, green, blue;

    NSRange range;
    range.length = 2;

    range.location = 0; 
    [[NSScanner scannerWithString:[rgb substringWithRange:range]] scanHexInt:&red];
    range.location = 2; 
    [[NSScanner scannerWithString:[rgb substringWithRange:range]] scanHexInt:&green];
    range.location = 4; 
    [[NSScanner scannerWithString:[rgb substringWithRange:range]] scanHexInt:&blue];    

    return [UIColor colorWithRed:(float)(red/255.0f) green:(float)(green/255.0f) blue:(float)(blue/255.0f) alpha:theAlpha];
}

@end

还有一个问题......这是一个可以接受我的配置全局常量的地方吗?

3 个答案:

答案 0 :(得分:2)

很多方式(好吧,至少两个......)

  • 您可以将普通的C extern用于全局变量

  • 您可以编写一个返回共享“全局”实例的类方法(例如,[NSUserDefaults standardUserDefaults]的工作方式)

关于过度使用全局变量的标准警告适用于......

编辑:

如果您想要的用例是添加一个方便的方法来向UIColor colorWithRed:green:blue:alpha:提供十六进制值,那么使用Objective-C类别的一个好方法是。例如:

UIColorHelper.h包含:

@interface UIColor (MyUIColorExtensions)
+ (UIColor *)colorWithHexRGB:(NSString *)rgb;
@end

和UIColorHelper.m包含相应的@implementation

在UIColor上创建类别后,应用程序的其余部分可以使用以下内容调用它:

[UIColor colorWithHexRGB:@"#3366ff"]

答案 1 :(得分:0)

您可以使用define,全局const变量等创建类似myConfig.h的.h文件,并将其包含在预取文件[YourProject.pch]中。您也可以在那里包含助手类别。

答案 2 :(得分:0)

您可以使用单例类,因此您只需要一个实例来包含全局大桶和辅助函数。我即将在我的博客http://blog.replicated.co.uk

上详述这种方法