Notice
일상에서 멍때리기
NSMutableArray의 for loop안에서 Item 제거하기 본문
반응형
NSMutableArray안에서 특정조건으로 검색하여 아이템을 제거하고 싶었다.
그래서 아래와 같은 코드를 작성했다.
for ( id item in items )
{
if ( [item customCheck] )
[items removeObject:item];
}
위와 같은 코드를 작성하였더니, exception과 함께 정상적으로 동작하지 않았다.
따라서 이 문제를 해결하기 위해 google에서 검색을 해본결과 아래와 같은 방법들로 사용을 해야한다는것을 알았다.
1.
NSMutableArray *removeItems = [NSMutableArray array];
for ( id item in items )
{
if ( [item customCheck] )
{
[removeItems addObject:item];
}
}
[items removeObejctsInArray:removeItems];
2
NSArray *temsCopy = [items copy];
for ( id item in itemCopy )
{
if ( [item customCheck] )
{
[items removeObject:item];
}
}
[itemsCopy release];
for in 구문을 사용하는 동안 array index에 변화가 생기면 안된다고 하는 모양입니다.
본인은 1번방법을 사용하여 위의 문제를 해결하였습니다.
출처 :
- http://stackoverflow.com/questions/111866/best-way-to-remove-from-nsmutablearray-while-iterating
- http://stackoverflow.com/questions/5826336/remove-items-in-a-for-loop-without-side-effects
반응형
'프로그래밍 > 삽질로그' 카테고리의 다른 글
NSString에서 파일명 추출하기 (0) | 2014.04.14 |
---|---|
NSMutableArray에 NSRect 넣기 (0) | 2014.04.14 |
[cocos2d-x]action moveby, moveto 차이점 (0) | 2014.04.14 |
gcc에서 특정 header file을 모든 파일에 한번에 include하는 방법 (0) | 2014.04.14 |
[Android] 화면 전환시 이벤트 받기 (0) | 2014.04.14 |
android activity task stack 확인 방법 (0) | 2014.04.14 |
[mac os x] ssh사용하는 방법 (0) | 2014.04.14 |
[C] 64bit int의 표현(선언)과 출력 (0) | 2014.04.14 |
[mac OS X]Shared Library (dylib) (0) | 2014.04.14 |
mac osx core file (0) | 2014.04.14 |
Comments