2011-01-25 8 views
0

Я ищу для наилучшей практики установления кода в масштабах всего используется строковая константаСтрока постоянная ... передовая практика?

Вариант 1

ехЬегп сопзЬ NSString * cDownloadCompleteNotification; (файл .h)

const NSString * cDownloadCompleteNotification = @ "DownloadCompleteNotification"; (.m файл)

Вариант 2

определяет kNotificationDownloadComplete @ "NotificationDownloadComplete" .... (common.h)

есть какое-либо преимущество, один из способов или другие ? ... или просто случай личных предпочтений?

+0

Возможный дубликат [Константы в Objective C] (http://stackoverflow.com/questions/538996/constants-in-objective -c) – zoul

ответ

1

Лично я отправляюсь на первое, хотя между ними не так много выбора. Использование памяти в обоих случаях одинаково.

В #define есть несколько вещей, на которые нужно обратить внимание. что если вы дважды включите файл .h.

Если вы используете определение, а затем измените значение константы, некоторые из ваших файлов могут быть скомпилированы со старым значением, а некоторые с новым - вам будет очень сложно разобраться, почему ваши обработчики уведомлений не вызывались! Вам нужно будет очистить перед зданием, чтобы убедиться, что вы все изменили. Этого не произойдет, если вы используете extern NSString. *

Надеюсь, это полезно.

NB Я бы не объявить его как константы - вы получите предупреждение компилятора при переходе его в postNotificationName: методы на NSNotificationCenter :(

* XCode должен быть достаточно умным, чтобы пометить файлы, которые включают в себя как common.h необходимо изменить, если он изменится, но я обнаружил, что это было неправильно в прошлом.

+0

Очень полезно .. спасибо – MDMonty

Смежные вопросы