Я написал метод, который выполняет некоторые графические вычисления. Там вы можете указать начальное направление, например «слева», «справа», «снизу», «сверху».
Теперь я не хочу, чтобы пользователь моего метода передавал запутанные значения, такие как 1, 2, 3 или 4 или даже строки. Ничего подобного. Вместо этого я хотел бы создать константы, такие как:
kFromLeft, kFromRight, kFromTop, kFromBottom
Я видел это в заголовочном файле Apple:
enum CGImageAlphaInfo {
kCGImageAlphaNone,
kCGImageAlphaPremultipliedLast,
kCGImageAlphaPremultipliedFirst,
kCGImageAlphaLast,
kCGImageAlphaFirst,
kCGImageAlphaNoneSkipLast,
kCGImageAlphaNoneSkipFirst,
kCGImageAlphaOnly
};
typedef enum CGImageAlphaInfo CGImageAlphaInfo;
Пять вещей, которые я здесь не понимаю / которые мне непонятны:
1) Почему точка с запятой отделяет определение от typedef?
2) Почему они повторяют CGImageAlphaInfo как паро?
3) Если бы я поместил что-то подобное в заголовочный файл, я бы сказал в своем методе, что тип параметра - CGImageAlphaInfo (конечно, у меня будет другое имя), верно?
4) Я бы обычно указывал значения для этих констант таким образом? (Пример):
#define kCGImageAlphaNone 100
#define kCGImageAlphaPremultipliedLast 300
#define kCGImageAlphaPremultipliedFirst 900
5) Требуется ли для этих констант устанавливать такие глупые значения? Или я мог бы просто проверить внутри моего метода, какая константа была передана, например
if(paramConst == kCGImageAlphaNone) {...}