Как сделать макрос NSString? - PullRequest
       18

Как сделать макрос NSString?

5 голосов
/ 01 августа 2011

Как сделать макрос, который представляет постоянное значение NSString? я собираюсь Предупреждения «символьная константа из нескольких символов» и «символьная константа слишком длинны для ее типа» при определении в Xcode 4:

#define LEVELTYPEGLASS @"Glass"

Мне нужно что-то сбежать?

Ответы [ 2 ]

3 голосов
/ 01 августа 2011

Избегайте использования определений для строковых констант.Определите как extern в заголовочном файле следующим образом:

extern NSString * const MYLevelTypeGlass;

И они будут реализованы в любом файле реализации:

NSString * const MYLevelTypeGlass = @"Glass";

Это дает еще несколько символов для ввода, но добавляет многопреимущества, такие как лучшая типизация для Xcode, гарантированная идентификация объекта (без дублирующихся строк).Это то, как Apple делает это, если это достаточно хорошо для них, это должно быть хорошо для вас.

1 голос
/ 02 августа 2011

Решение, предложенное PeyloW, великолепно. Но я просто хочу отметить, что решение заработало после того, как я добавил #import "Foundation / Foundation.h" в заголовочный файл. Таким образом, заголовочный файл Constants.h должен выглядеть так:

#import "Foundation/Foundation.h"

extern NSString * const LEVELTYPEGLASS; 
#define IMAGECOUNT 5
...

Тогда файл реализации выглядит так:

#import "Constants.h"

NSString * const LEVELTYPEGLASS = @"Glass";

И если вам нужно включить это во весь проект, вам нужно импортировать этот файл -Prefix.pch:

#import "Constants.h"

В этом случае все определения макросов находятся в заголовочном файле Constants.h, а некоторые константы NSString находятся в файле реализации Constants.m. Еще раз спасибо PeyloW:)

...