Ответ 1
первая идеальна для констант, потому что строка, на которую указывает она, не может быть изменена:
//.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 =\
Короче говоря, используйте const (первый) по умолчанию. компилятор сообщит вам, если вы попытаетесь изменить его в будущем, - тогда вы можете решить, была ли это ошибка от вашего имени или если объект, на который он указывает, может измениться. это хорошая защита, которая экономит много ошибок /headscratching.
другая вариация для значения:
extern int MyInteger; // << value may be changed anytime
extern const int MyInteger; // << a proper constant