Определить Vs статическую константу Vs NSString - Точка зрения памяти

Что представляет собой лучший выбор между:

#define kYes @"Yes"

и

static NSString *const kYes = @"Yes";

и

NSString *kYes = @"Yes";

с точки зрения потребления памяти. Помня о том, что в приложении будут тысячи констант.

Ответ 1

С точки зрения памяти - статическая переменная лучше, так как она ссылается один раз. #define вставляет строку во все вхождения, тем самым - умножая использование памяти... (то есть, если GCC не оптимизирует те же самые постоянные строки, которые на самом деле могут быть в этом случае - нет разницы)