2009-08-16 6 views
1

나는 plist 문자열로 초기화 오전 NSMutableArray 있습니다.get ObjectAtIndex 제거 경고가 응답하지 않을 수 있습니다

하지만 배열에서 objectAtIndex 또는 removeObjectAtIndex를 수행하려고하면 "NSMutableArray가 ....에 응답하지 않을 수 있습니다"라는 경고가 표시되며 실행시에도 오류가 발생합니다.

어떻게해야합니까?

들으

+4

경고가있는 정확한 코드 행 (및 앞에서 설명한 모든 문맥 행)을 게시하십시오. –

답변

0

이 객체가 실제로 NSMutableArray 아닙니다, 당신은 메소드 이름의 철자가 잘못, 또는 (가능성) 중 하나처럼 보인다.

유형을 확인하는 한 가지 방법이 있습니다. 이것은 단지 시뮬레이터에서 작동하지만이 문제 해결에 도움이 될 수 :

#import <objc/runtime.h> 

// Later, when you've got the object x that you want to be an NSMutableArray: 
NSLog("The type of x is %s", class_getName([x class])); 

확인하면 해당 라인에 도달 앱 디버그 출력 (바로 가기 : 명령 교대-R 엑스 코드에서).

객석 -C의 메소드 이름은 대소 문자를 구별하며, 인수가있을 때 끝에 콜론을 기술적으로 포함합니다. 그래서 유효한 호출은 다음과 같을 것이다 :

것을 언급하고 불필요한 것,하지만 난 당신이 실수 또는 무언가에 의해 자본 O를 사용하는 경우에 대비, 내 대답보다 포괄적 인 줄 알았는데 경우
id gottenObject = [x objectAtIndex:0]; 

죄송합니다.

1

관련 코드가 없지만 NSMutableArray를 NSArray 변수에 저장하면 컴파일러는 변수 형식을 기반으로 한 정적 유형 지정을 사용하고 개체가 NSArray이고 따라서 변경할 수 없다고 가정합니다. 따라서 "응답하지 않을 수 있습니다 ..."경고가 표시됩니다. 반대로 NSMutableArray * 변수에 NSArray를 저장하려고하면 런타임시 오류가 발생할 수 있습니다. 문맥없이 말하기는 꽤 어렵지만, 탐험해야 할 것들이 있습니다.

관련 문제