Ответ 1
Я согласен с ответом Alex Coplan с важным дополнением.
Поместите все свои константы в файл с именем "Constants.h" (или вы хотите/нет)
EDIT:
- Когда я ответил на этот вопрос три года назад, я был на стороне
#define
, проверьте ниже для пересмотра.
Constants.h
#define kFilterDate @"date"
#define kFilterRadius @"radius"
#define kFilterSort @"sort"
//Global Strings
#define kDividingString @" / "
//Strings
#define kTour @"Tour"
#define kToursKey @"tours"
Но вместо того, чтобы импортировать его в любой файл, который вам нужен, импортируйте его в свой префиксный файл, чтобы все ваши заголовки автоматически импортировали его во время вашего проекта.
Project_Prefix.pch
//
// Prefix header for all source files of the project
//
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "Constants.h"
#endif
ПЕРЕСМОТР
Все, хотя вся предыдущая информация все равно будет работать, есть некоторые вещи, которые мы можем сделать, чтобы быть немного более безопасными относительно наших констант.
Создайте свои константы в файле Constants.h
, используя константные переменные
//Filters
FOUNDATION_EXPORT NSString *const kFilterDate;
FOUNDATION_EXPORT NSString *const kFilterRadius;
FOUNDATION_EXPORT NSString *const kFilterSort;
//Global Strings
FOUNDATION_EXPORT NSString *const kDividingString;
//Strings
FOUNDATION_EXPORT NSString *const kTour;
FOUNDATION_EXPORT NSString *const kToursKey;
И в Constants.m
//Filters
NSString *const kFilterDate = @"date";
NSString *const kFilterRadius = @"radius";
NSString *const kFilterSort = @"sort";
//Global Strings
NSString *const kDividingString = @" / ";
//Strings
NSString *const kTour = @"Tour";
NSString *const kToursKey = @"tours";
Это все равно можно импортировать в файл префикса, как указано выше, но использовать только константы, которые действительно являются глобальными в файле. Которые часто используются во многих местах. Сбрасывание всех ваших констант в этот файл приведет к тому, что ваш код будет использовать любую константу для привязки к файлу констант. Таким образом, если вы попытаетесь повторно использовать код, файл констант должен прийти с ним. Это не всегда обязательно плохо, и много раз предназначено (что хорошо), но ограничение зависимостей всегда является хорошей идеей.
Несколько вещей о пересмотре:
-
FOUNDATION_EXPORT
vsextern
. Первый компилируется для C и С++. Это в основном означаетextern
, но в С++ добавляется флаг "C". -
consts
vsdefines
.consts
являются безопасными по типу и уважаемым областям.defines
- это полная противоположность.