Не принимайте NSInteger
как int
. На самом деле это не так. Итак, %d
в
NSLog(@"%d", index);
обманывает вас, если вы компилируете в 64-битном режиме. См. NSInteger документацию.
Вы даже не предполагали, что indexGreaterThanIndex
вернет -1
.
В документации явно сказано, что возвращается NSNotFound
. Следуя документации, вы в конечном итоге обнаружите, что NSNotFound
равно NSIntegerMax
, максимально возможное значение в NSInteger
. Когда NSInteger
равен long
и превращен в int
, его становится -1
. Но это деталь реализации, и вы не должны на это полагаться. Вот почему они определили символическую константу NSNotFound
для начала.
Вы должны были следовать указаниям документации и написать код вроде
while(index != NSNotFound) {
[self removeFileWithPathIndex:index];
index = [indexSet indexGreaterThanIndex:index];
}
В некотором смысле, вы не должны были даже объявить
NSInteger index;
потому что все индексы в Foundation NS
U Integer
.