В поисках этого я просто придумал следующее решение, которое отвечало моим собственным требованиям. Я думал, что опубликую это здесь для людей, ищущих что-то подобное.
Скажи, что у меня есть перечисление.
typedef NS_ENUM (NSInteger, ISDirection) {
ISDirectionUp,
ISDirectionDown,
ISDirectionLeft,
ISDirectionRight
};
Чтобы иметь возможность зацикливаться на этом, я определяю следующий макрос препроцессора.
#define ISDirectionAllAsDir ISDirection dir = ISDirectionUp; dir <= ISDirectionRight; dir++
Тогда я использую его внутри цикла, как таковой:
for(ISDirectionAllAsDir) {
NSLog(@"Direction %d", dir);
}
Это помещает логику для итерации в одно место (макрос), что повышает удобство сопровождения кода.