il primo è l'ideale per le costanti perché la stringa a cui punta non può essere cambiato:
//.h
extern NSString * const MyConstant;
//.m
NSString * const MyConstant = @"MyConstant";
...
MyConstant = @"Bad Stuff"; // << YAY! compiler error
and
//.h
extern NSString *MyConstant;
//.m
NSString *MyConstant = @"MyConstant";
...
MyConstant = @"Bad Stuff"; // << NO compiler error =\
insomma, uso const (ex) per impostazione predefinita. il compilatore ti farà sapere se provi a cambiarlo lungo la strada, quindi puoi decidere se è stato un errore per tuo conto o se l'oggetto a cui punta potrebbe cambiare. è una buona protezione che consente di risparmiare un sacco di bug/headscratching.
l'altra variante è per un valore:
extern int MyInteger; // << value may be changed anytime
extern const int MyInteger; // << a proper constant