배열에 객체를 추가하려고 할 때 전체 (용량 = 10) 일 때 모든 값을 앞으로 이동하고 첫 번째 (시프트 레지스터 등)를 지우려면배열 비욘드 경계?
다음을 수행하려고했습니다. 그것은 allways 8 후 8의 한계를 넘어 있기 때문에, 10 후 충돌! ??
if (count>9)
{
for(count=0;count<9;count++)
{
NSLog(@"%@",listOfEvents);
[listOfEvents removeObjectAtIndex:count];
[listOfEvents insertObject:[listOfEvents objectAtIndex:(count+1)] atIndex:count];
}
[listOfEvents removeObjectAtIndex:9];
[listOfEvents insertObject:event atIndex: 9];
}
else
[listOfEvents addObject:event];
count++;
개체를 제거하지 않고 시도한 경우 다른 오류가 발생합니다. 무엇이 잘못 되었나요? 공간 색인이있을 때 왜 어떤 색인에 값을 추가 할 수 없습니까? ? 감사합니다.
고맙습니다. 나는 그것을 이해하지만, 왜 그것은 굳어 있지 않습니까 ?? 내 배열 바운드는 10이므로 색인은 0-9입니다! 나는 바운드 것을 이해할 수 없다. 또한 한계선을 넘어선 경우에도 배열을 자동으로 확대해야합니까? – Curnelious
NSMutableArrays는 요소가 추가되거나 삭제 될 때마다 크기를 조정합니다. 그리고 크기가 조정되면 수용 할 수있는 색인의 범위도 조정됩니다. – Dirk
@Dirk : 감사. @Rant : 따라서 요소를'count + 1'에서'count'까지 복사 *하는 대신 * 요소를 제거하지 않을 수도 있습니다. –