extern
ваш друг ... Постарайтесь узнать об этом.
По сути, вы объявляете глобальную переменную в своем заголовочном файле, используя модификатор extern
, в основном это означает, что ее значение будет определено позже в другом исходном файле.
Так что вы можете иметь:
const.h
extern NSString * kAudioURL;
Это просто объявляет переменную как объект NSString.
Все файлы, включая ваш const.h
, смогут видеть эту переменную, даже если она на самом деле не определена.
Затем вы определили переменную в другом файле (реализации).
const.m
NSString * kAudioURL = @"foo";
Таким образом, определение будет скрыто, как это происходит в файле реализации, но другие файлы будут иметь доступ к вашей переменной, включая файл заголовка.
Таким образом, вы сможете назначить правильное значение один раз.
Конечно, в вашем примере вы используете вычисленные значения. Поскольку kAudioURL
является глобальным, вы не сможете написать:
NSString * kAudioURL = [ NSString stringWithFormat: @"%@/images", SERVER_URL ];
Но вы можете установить начальное значение равным nil и использовать функцию инициализации, которая может быть вызвана из делегата вашего приложения.