1. Local Constant
There are two type of constants.(1) static NSString * const kMyConstant = @"constant string";
(2) #define kMyConstant @"constant string"
"static const" is a better way, although "#define" is much shorter,
Here are some reasons:
- "#define" are not type-safe.
- We can test the value of the "static const" constant with debugger;
- Memory. Preprocessor create a new string each time the macro appear, while "static const" reuse the same string.
2. Global Constant
---------------- .h file --------------
extern NSString *const kMyConstant;
---------------- .m file --------------
// define in a .m file OUTSIDE @implementation like...
NSString *const kMyConstant = @"my constant";
The
extern declaration says that there exists an NSString * const by the name kMyConstant whose storage is created in some other place.[1]Remove the
static -- that specifies that kMyConstant is only visible in files linked with this one.[1]



