estoy de acuerdo con la respuesta de Alex Coplan con una adición importante.
poner todas sus constantes en un archivo llamado "constants.h" (o w/e desea)
EDIT:
- Cuando respondí esta pregunta hace tres años, yo estaba en el
#define
vagón, verifique a continuación para una revisión.
constants.h
#define kFilterDate @"date"
#define kFilterRadius @"radius"
#define kFilterSort @"sort"
//Global Strings
#define kDividingString @"/"
//Strings
#define kTour @"Tour"
#define kToursKey @"tours"
Pero en lugar de importarlo en cualquier archivo que lo necesite, importarlo en su archivo de prefijo de modo que todas sus cabeceras importar de forma automática a través de su proyecto.
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
REVISIÓN
Todos sin embargo toda la información anterior seguirá funcionando, hay algunas cosas que podemos hacer para ser un poco más segura acerca de nuestros constantes.
Cree sus constantes en su archivo Constants.h
utilizando variables const
//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;
Y en 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";
Esto todavía puede ser importado a su archivo de prefijo como el anterior, pero sólo usar constantes que son verdaderamente global en el archivo para hacer eso. Los que se utilizan con frecuencia en muchos lugares. Volcar todas sus constantes en este archivo hará que su código que usa cualquier constante se acople al archivo de constantes. Por lo tanto, si intenta volver a utilizar el código, el archivo de constantes debe venir con él.Esto no siempre es necesariamente malo, y muchas veces está destinado (lo cual está bien), pero limitar las dependencias siempre es una buena idea.
algunas cosas acerca de la revisión:
FOUNDATION_EXPORT
vs extern
. El primero compila diferentes para C y C++. Básicamente significa extern
, pero en C++ agregará la bandera "C".
consts
vs defines
. consts
son seguros y respetan el alcance. defines
son exactamente lo contrario.
Odio usar '.h .m' para las constantes globales. ¡Tener que escribir cada nombre de variable DOS VECES es un DOLOR! – Hlung
Tener un código limpio, consistente y legible vale 10 veces más que el doble de su dolor. – ColdLogic
Para el caso siguiente, ¿qué debo hacer? soy un error "elemento de inicialización no es constante de tiempo de compilación para USER_LIST_URL"
NSString *const SERVER_URL = @"http://www.google.com"; NSString *const USER_LIST_URL = [NSString stringWithFormat:@"%@/xml/index.cfm",SERVER_URL];
–