Какао-привязки и макросы - PullRequest
1 голос
/ 15 апреля 2011

У меня есть связка в Интерфейсном Разработчике.Когда я хочу получить к нему доступ, я должен сделать это, например:

[[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 Ответ

1 голос
/ 15 апреля 2011

Я никогда так не делал, но не вижу причин, по которым ваш подход не сработает.Тем не менее, я думаю, что создание статического служебного класса может быть немного более гибким и более удобным, например:

@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
...