Cocoa绑定和宏

时间:2011-04-15 12:56:06

标签: objective-c cocoa c-preprocessor cocoa-bindings

我在Interface Builder中有很多绑定。当我想访问它时,我必须这样做,例如:

[[NSUserDefaults standardUserDefaults] integerForKey:@"bINDDPagesTag"]

我必须为其他绑定做至少20次...所以,如果我使用#define进行这样的绑定是正常的:

#define kINDDPagesTag [[NSUserDefaults standardUserDefaults] integerForKey:@"bINDDPagesTag"]
#define kINDDRange [[NSUserDefaults standardUserDefaults] objectForKey:@"bINDDRange"]
#define kINDDBleedTop [[NSUserDefaults standardUserDefaults] objectForKey:@"bINDDBleedTop"]
#define kINDDBleedBottom [[NSUserDefaults standardUserDefaults] objectForKey:@"bINDDBleedBottom"]
#define kINDDBleedInside [[NSUserDefaults standardUserDefaults] objectForKey:@"bINDDBleedInside"]
#define kINDDBleedOutside [[NSUserDefaults standardUserDefaults] objectForKey:@"bINDDBleedOutside"]
#define kINDDSendData [[NSUserDefaults standardUserDefaults] objectForKey:@"bINDDSendData"]

它完美无缺,但我应该用这种方式吗?我有更好的方法吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

我从来没有这样做过,但我认为没有理由说你的做法不起作用。但是,我认为创建一个静态实用程序类可能会更灵活,更易于维护,例如:

@interface InterfaceConstants : NSObject {
}
+ (int)pagesTag;
+ (id)range;
//etc.
@end

@implementation InterfaceConstants
+ (int)pagesTag {
    return [[NSUserDefaults standardUserDefaults] integerForKey:@"bINDDPagesTag"];
}
+ (id)range {
    return [[NSUserDefaults standardUserDefaults] objectForKey:@"bINDDRange"];
}
//etc.
@end