빠른 열거 형을 사용할 때 배열의 마지막 개체에 도달했을 때를 알 수있는 가장 좋은 방법은 무엇입니까? int를 증가시킨 다음 배열의 길이를 비교하는 것보다 나은 방법이 있습니까?목표 C : Fast Enumeration을 사용할 때 마지막 객체?
6
A
답변
15
당신이 배열을 시작하는 경우 마지막 요소를 나가 (이 ' 그것에 대한 특정 호출)를 사용하고 열거 자에서 얻은 각 요소를 비교합니다. 같은 뭔가 :
id lastEl = [myArray lastObject];
for (id anEl in myArray)
{
if (anEl == lastEl)
..... // do the last thing
}
비교 비용은 카운터와 동일하지만 당신은 당신이 카운터를 증가하는 것을 잊지 때 변함없이 발생하는 카운터 또는 실수를 증가의 비용이 없습니다.
0
나는 이것을하는 (단순한) 방법이 없다고 생각합니다. 빠른 열거 형을 사용하는 것의 단점 중 하나입니다. 따라서 열거중인 항목의 색인을 알아야 할 때 정수로 작성해야합니다. , 당신은 여전히
2
는 일반적으로 빠른 열거하면 카운터를 사용하지 않는 의미 등 빠른 열거를 사용할 때 경계 밖으로 갈 수 없다는 사실에서 혜택을 얻을 것입니다 말했다
... 다른 형태는 카운터입니다없이
...
NSEnumerator *enumerator = [objectSet objectEnumerator];
id setObject;
while ((setObject = [enumerator nextObject]) != nil)
{
...
}
1
0
또한 블록으로 열거를 사용할 수 있습니다
[myArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
BOOL isLastObject = idx == [myArray count]-1;
if (isLastObject){
//...
}
}];
당신이 종류의 배열은 적절한 클래스와 id
를 교체하는 것이 좋습니다 포함 개체를 알고있는 경우.
관련 문제
- 1. 목표 C - 문자열에서 마지막 문자 제거
- 2. 숫자로 문자열 정렬 마지막 목표 C
- 3. 목표 - C : 객체 초기화하고 다음 코드를 감안할 때 메모리 관리
- 4. 목표 C 배열 및 객체 릴리스
- 5. 목표 - C - 직접 내가 목표 C에 새로 온 객체
- 6. 목표 C : 클래스 메서드에서 객체 배열 반환
- 7. 목표 - C 객체 생성 방법의 차이
- 8. 목표 C : 객체 이름 뒤의 괄호
- 9. 루프 내에서 동적으로 객체 생성 - 목표 C
- 10. 목표 C - 단위 테스트 및 모의 객체?
- 11. 목표 C 배열에 인덱스에 객체 추가
- 12. 목표 C, 객체 공개에 관한 질문
- 13. C# fast crc32 계산 :
- 14. Jaxer를 사용할 때 객체 정의하기
- 15. Fast Artificial Neural Network Library를 사용할 때 가중치를 인쇄합니다.
- 16. 단순히 목표 - C에서 목표 - C
- 17. 목표 - C 상수 내 목표 - C 프로젝트에서
- 18. 목표 C : UILabel에서 마지막 문자의 위치를 반환하는 함수를 작성 하시겠습니까?
- 19. 목표 - C 자바 열거의 동등 또는 "정적 마지막"
- 20. 문자열의 마지막 쉼표를 "and"로 바꿉니다. (목표 - C)
- 21. 목표 - C 질문 목표 - C에서
- 22. C#에서 객체 속성 초기화를 사용할 때 종속 필드들
- 23. 목표 - C
- 24. 목표 - C 카테고리
- 25. 학습 목표 C, iphone
- 26. 목표 C : 버튼이있는 ResignFirstResponder
- 27. Django에서 raw_id_fields를 사용할 때 강제 생성 객체
- 28. .html을 사용할 때 이상한 객체 예상 오류
- 29. 목표 C 순차 실행 스레드
- 30. 목표 C : IBaction의 UIAlert
나는 이것에 동의 하겠지만 "lastElement"가 아니라 "lastObject"라고 생각한다. – slycrel
이제 당신과 나는 동의합니다! 그게 내가 SDK 문서를 호출하지 않는 것에 대한 것입니다. –
멋진 답변과 내가 찾고 있었던 것! –