#define backgroundColor [UIColor whiteColor]
затем, чтобы использовать его, вы скажете UIColor *txtColor = backgroundColor;
.
Хотя вы можете использовать только whiteColor
в качестве определения вместо [UIColor whiteColor]
.Затем вы бы позвонили [UIColor backgroundColor];
вместо приведенного выше примера.
Я бы не стал делать это для генерации стилей.Определение различных параметров вне кода было бы хорошей идеей, но использование define является довольно обязательным и устраняет цель отсоединения пользовательского интерфейса от кода.
В #define
нигде не ставьте точку с запятой,Когда препроцессор вставляет определение, он вставляет любую точку с запятой там, где она есть; вы не хотите, чтобы препроцессор вставлял точки с запятой. При написании определения вы, вероятно, не знаете всех мест, в которые вы его напишите, поэтому вам не следует использовать точку с запятой, потому что вы можете написать его встроеннымвыражение.
Другой вариант - использовать const
.
В написанном мною коде у меня есть #define
s для строковых литералов @"literal string"
и чисел.В других местах я использую объявление const
, которое выглядит следующим образом:
//static type *const variableName = assignment;
static NSString *const kConstantString = @"Constant variable";
Константы не используют препроцессор для заполнения информации.Если вы часто обращаетесь к определению и оно использует некоторые вычисления, возможно, оно лучше подходит для объявления констант, которое сохраняется только один раз.
Другая большая причина, по которой я использовал const
вместо #define
, заключается в том, что define не проверяется типом, поскольку обрабатывается препроцессором.Define в основном отключает предупреждения компилятора и выдает только ошибки;строгие предупреждения чрезвычайно полезны и могут избавить вас от многих неприятностей.