Объявление enum является , а не структурой, синтаксис аналогичен, но он просто определяет серию именованных чисел.
Эти константы относятся к двум различным типам типов данных: строка против числа.
Именованные константы в UIApplications являются указателями на NSString объекты , у них есть значение указателя, а также есть строковая константа, на которую они указывают (которая находится в файле .m). Вроде как объявление некоторых строковых констант, подобных этой (за исключением того, что они являются внешними и определение завершено в другом месте):
NSString* const UIApplicationDidEnterBackgroundNotification = @"UIApplicationDidEnterBackgroundNotification";
Именованные константы в UITableViewScrollPosition - это имена, присвоенные целочисленным значениям. Вроде как:
const int UITableViewScrollPositionNone = 0;
Причиной использования перечисления (именованных чисел) в одном случае является то, что они определяют все возможные значения по сравнению со строковой константой, они определяют несколько значений, но пользователи могут определять другие. С помощью строковых констант разные библиотеки могут определять свои собственные без какой-либо вероятности повторения строковых адресов, тогда как определение расширений перечислений может иметь коллизии между разными библиотеками, если они определяют одно и то же целочисленное значение, чтобы иметь разные значения.