Струнная константа ... лучшая практика? - PullRequest
0 голосов
/ 25 января 2011

Я ищу лучшую практику установки строковой константы для всего кода

Вариант 1

extern const NSString * cDownloadCompleteNotification; (.h файл)

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

Вариант 2

define kNotificationDownloadComplete @ "NotificationDownloadComplete" .... (common.h)

есть ли польза, так или иначе? ... или просто случай личных предпочтений?

1 Ответ

1 голос
/ 25 января 2011

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

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

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

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

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

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

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