Каково значение расположения
const
ключевое слово, объявляя переменную в Цели-C, например:
extern const NSString * MY_CONSTANT;
против
extern NSString * const MY_CONSTANT;
Используя первую версию в назначениях производит предупреждения об «определителях от целевого типа указателя», отказанного, таким образом, я предполагаю, что вторая версия гарантирует, что адрес указателя остается тем же. Я был бы очень признателен за более категорический ответ все же.Заранее большое спасибо!
В первом случае вы объявляете смешной указатель на неизменном Const NSString
Const NSString , в то время как во втором случае вы объявляете неизменный указатель на смену NSSTRING
Отказ
Простой способ запоминать это, чтобы посмотреть, где находится *
; Все слева от него - тип «Postee», и все справа от него описывает свойства указателя.
Профилирующий код или блокировка данных можно сделать через файлы карты: для GCC см. здесь , для VS см. здесь .
Я еще не видел полезный инструмент для профилирования размеров, хотя (и у вас нет времени, чтобы исправить мой взгляд против Addin).
В целом const
всегда относится к токену непосредственно перед const
. Во втором случае const
означает, что указатель постоянна, не то, что на что указано. Исключением является когда Const
появляется до того, как все, что может значительно быть постоянным, как в вашем первом примере. В этом случае это относится к первому типу, в данном случае NsString
, поэтому его эквивалент Extern NsString Const * My_Constant