статическая константа Vs определяет директиву - PullRequest
4 голосов
/ 24 января 2011

Я хочу определить константу в моем файле .m.Я вижу здесь два варианта:

static NSString *const kMyLabel = @"myLabel";

#define kMyLabel @"myLabel"

Какой из них лучший?Есть ли здесь какие-либо проблемы с использованием статики?

Ответы [ 2 ]

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

Единственное отличие состоит в том, что вы можете взять адрес переменной, в то время как вы не можете взять адрес константного строкового выражения (к чему сводится макрос). Я предпочитаю избегать #define s, когда это возможно, поэтому я бы выбрал первое, но это просто вопрос стиля.

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

По большей части это не имеет значения с точки зрения использования. Но есть небольшое преимущество использования статического метода в том, что каждое использование константы kMyLabel в коде будет указателем на один и тот же объект (в большинстве случаев), тогда как метод #define создаст копии строки. Я полагаю, что в более поздних компиляторах достаточно разумно использовать defines как один объект, но для безопасности я бы просто использовал метод static.

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