2011-04-15 56 views
1

我在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

我从来没有这样做过,但我看不出为什么你的方法不行。但是,我认为创建一个静态实用程序类可能会更灵活一些,更易于维护,例如:

@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 
+0

谢谢。我认为这是一个更好的解决方案。 – user635064 2011-04-15 22:44:19