문제

나는있다 NSArray 그리고 특별한 경우를 뒤로 반복해야하므로 먼저 마지막 요소를 보도록해야합니다. 그것은 성능의 이유입니다 : 마지막이 의미가 없다면, 이전의 모든 것을 무시할 수 있습니다. 그래서 나는 루프를 깨고 싶다. 그러나 0에서 n까지 반복하면 작동하지 않습니다. 나는 n에서 0으로 가야 할 것입니다. 어쩌면 내가 모르는 방법이나 기능이있을 수 있으므로 휠을 다시 발명 할 필요가 없습니다.

도움이 되었습니까?

해결책

다른 답변을 추가하려면 사용할 수 있습니다. -[NSArray reverseObjectEnumerator] Objective-C 2.0의 빠른 열거 기능과 함께 (iPhone, iPhone에서 사용 가능) :

for (id someObject in [myArray reverseObjectEnumerator])
{
    // print some info
    NSLog([someObject description]);
}

더 많은 정보가 포함 된 출처 : http://cocoawithlove.com/2008/05/fast-enumeration-clarifications.html

다른 팁

이것은 Performace를위한 것이므로 여러 가지 옵션이 있으며 어떤 것이 가장 잘 작동하는지 확인하는 것이 좋습니다.

  • [array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:…]
  • -[NSArray reverseObjectEnumerator]
  • 배열의 리버스 사본을 만듭니다 그런 다음 정상적으로 반복하십시오
  • 루프에 표준 C를 사용하고 배열을 통해 시작하고 뒤로 작업하십시오.

더 극단적 인 방법 (성능이 매우 중요하다면)

  • 코코아가 빠른 물체 열거를 구현하는 방법을 읽고 반대로 자신만의 동등한 것을 만듭니다.
  • C 또는 C ++ 배열을 사용하십시오.

다른 사람들이있을 수 있습니다. 이 경우 누구나 추가 할 수 있습니다.

에서 여기:

 NSEnumerator* myIterator = [myArray reverseObjectEnumerator];
 id anObject;

 while( anObject = [myIterator nextObject])
 {
     /* do something useful with anObject */
 }
[NsArray reverseObjectEnumerator]
for (int i = ((int)[array count] - 1); i > -1; i--) {
    NSLog(@"element: %@",array[i]);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top