Лично я выбираю первое, хотя выбирать между ними не так много. Использование памяти одинаково в обоих случаях.
В #define есть несколько вещей, на которые стоит обратить внимание, например. Что делать, если вы включаете файл .h дважды.
Если вы используете определение и затем изменяете значение константы, некоторые из ваших файлов могут быть скомпилированы со старым значением, а некоторые - с новым - вам будет очень сложно понять, почему не вызывались ваши обработчики уведомлений! Вы должны очистить перед сборкой, чтобы убедиться, что вы все изменили. Этого не произойдет, если вы используете внешнюю строку NSString. *
Надеюсь, это полезно.
NB. Я бы не объявил это как const - вы получаете предупреждение компилятора при передаче его в postNotificationName: методы в NSNotificationCenter: (
* XCode должен быть достаточно умным, чтобы помечать файлы, которые содержат common.h, нуждающимся в перестройке, если она изменяется, но я обнаружил, что в прошлом это было неправильно.