マクロで書くならこんな感じ?
range の部分に関数コールなどを入れることはできない制限がある。
# define FOREACH_RANGE(range, i) \
for (NSUInteger i = range.location; i < NSMaxRange(range); i++)
関数で書くならこんな感じ。
ただし break はできない。continue の代わりには return が使える。
static void each_range(NSRange range, void(^body)(NSUInteger index)) {
for (NSUInteger i = range.location; i < NSMaxRange(range); i++) {
body(i);
}
}
関数の方が好みかな。