2010-07-18 7 views
0

nsmutable 배열에서 객체를 제거하는 데 문제가 있습니다. 여기있어.NSMutableArray iPhone SDK에서 여러 객체를 제거하는 중 문제가 발생했습니다.

NSURL *url = [NSURL URLWithString:@"http://www.lockerz.com/dailies"]]; 
NSData *datadata = [NSData dataWithContentsOfURL:url]; 
NSString *removeForArray = [[NSString alloc] initWithData:datadata encoding:NSASCIIStringEncoding]; 
NSArray *theArray = [removeForArray componentsSeparatedByString:@" "]; 
NSMutableArray *deArray = [[NSMutableArray array] initWithArray:theArray]; 
[deArray removeObjectsInRange:NSMakeRange(0, 40)]; 
NSLog(@"%@", deArray); 
+0

글쎄, 무엇이 문제인가? –

+0

그것은 내게 충돌하고 다음과 같이 말합니다 : *** 캐치되지 않은 예외 'NSInvalidArgumentException'으로 인해 앱 종료 중, 이유 : '*** - [NSMutableArray initWithCapacity :] : 추상 클래스에만 정의 된 메서드입니다. 정의 - [__ NSArrayM initWithCapacity :]! ' *** 처음 던질 때 호출 스택 : –

+1

Michael Amici :'array' (초기화 된 빈 배열 객체를 반환하는'alloc' (사용자가 초기화해야하는 빈 객체를 반환합니다)와 'array'를 혼동하는 것처럼 보입니다. 소유하지 마십시오. 한 가지 해결책에 대한 Georg Fritzsche의 대답을 참조하십시오. –

답변

3

+[NSMutableArray array]은 이미 초기화 된 배열을 반환합니다. 초기화 메소드를 사용하지 마십시오. alloc d 인 새 인스턴스에서 사용됩니다. 이 경우

할 수 있습니다 중 하나

  • 사용 -mutableCopy
  • 적당한 간이 생성자에게 다음 세 가지 라인
  • 을 사용하여 인스턴스은 동일

    • alloc/init :

      NSMutableArray *a = [[theArray mutableCopy] autorelease]; 
      NSMutableArray *b = [NSMutableArray arrayWithArray:theArray]; 
      NSMutableArray *c = [[[NSMutableArray alloc] initWithArray:theArray] autorelease]; 
      
    관련 문제