Создайте список переменных-констант из других констант

Я только что прочитал все глобальные константы-переменные объектива-cвопросы и ответы, но я нашел их неуместными для моей проблемы.

Мне нужен такой список переменных:

NSString *baseURL = @"http://example.org";
NSString *mediaURL = @"http://example.org/media/";
NSString *loginURL = @"http://example.org/login/";
NSString *postURL = @"http://example.org/post/";
etc.

Конечно, я не могу использовать этот код, потому что это очень плохой подход, и если мне нужно изменить базовый URL, я должен изменить все переменные. Поскольку мне нужно, чтобы эти переменные были доступны из каждого класса приложения, я объявил их глобальными с помощью следующего подхода:

// Constants.h
extern NSString *const baseURL;
extern NSString *const mediaURL;
extern NSString *const loginURL;
extern NSString *const postURL;


// Constants.m
NSString *const baseURL = @"http://example.org";
NSString *const mediaURL = [NSString stringWithFormat:"%@%@", baseURL, @"/media/"];
NSString *const loginURL = [NSString stringWithFormat:"%@%@", baseURL, @"/login/"];
NSString *const postURL = [NSString stringWithFormat:"%@%@", baseURL, @"/post/"];

НОЯ не могу этого сделать, потому что получаю эту ошибку:

Initializer element is not a compile-time constant

Это происходит, потому что объекты работают во время выполнения.

Теперь мой вопрос, я надеюсь, раз и навсегда, что является хорошим и хорошим способом справиться с этим довольно обычным сценарием в сетевых приложениях?

Я думаю, что использование класса (или одноэлементного класса) для обработки переменных-констант немного излишне, а также слишком многословно использовать что-то вроде [MyClass globalVar]каждый раз, когда мне это нужно.

Идеи по этому поводу?

5
задан Fred Collins 7 April 2012 в 14:12
поделиться