일상에서 멍때리기

NSMutableArray의 for loop안에서 Item 제거하기 본문

프로그래밍/삽질로그

NSMutableArray의 for loop안에서 Item 제거하기

로 얄 2014. 4. 14. 23:38
반응형

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


반응형
Comments