문제

방금 OS 3.0에 대해 iPhone 앱을 컴파일하려고 시도했는데 빠른 열거를 사용할 때 컴파일 오류가 발생합니다.

나는 CComment 클래스를 포함하는 NSARRAY를 살펴 보려고 노력하고 있습니다.

for (cComment* newComment in comments.comments)

그리고이 오류가 발생합니다

오류 : 액세서 유형은 속성 유형 '의견'과 일치하지 않습니다.

OS 2.2.1로 컴파일하면 완벽하게 작동합니다.

오류를 이해합니다. 열거는 강력하게 입력되지 않았지만 제네릭/템플릿이 객관적인 C에서 지원되지 않기 때문에. 그래서 현재 나는 이것에 관한 한 가지 방법 만 볼 수 있습니다.

for (id commentObject in comments.comments)
{
     cComment *newComment = (cComment *)commentObject;
}

누구든지 다른 방법을 생각할 수 있습니까? 왜 이것이 바뀌 었습니까? 이 변경에 대한 Apple 문서에 대한 요점은 모두 감사 할 것입니다.

편집하다

Grouchal 제안에 따라 나는 이것을 시도했다 : nsarray* allcomments = comment.comments와 같은 오류가 발생 했으므로 결국 열거에 관한 것이 아닙니다.

코드 양식은 헤더 파일입니다.

NSMutableArray *댓글;

@property (Readonly, Nonomicic) nsarray* 댓글;

그리고 속성은 구현 파일에 합성됩니다.

속성을 NSMutableARRAY로 변경하면 문제가 해결되는 것처럼 보이지만 이것이 사실이 아닌 이유는 없습니다. 모든 아이디어.

감사.

도움이 되었습니까?

해결책 3

이 질문을 종료하고 iPhone OS 3.0에 대한 목표 C 변경하에 새로운 질문을 할 것입니다.

나는 nsarray를 반환하기 위해 Getter 방법을 직접 구현했으며 잘 작동합니다. 또한 속성을 NSMutableARRAY로 변경하는 것은 작동하지만 실제로는 내가하고 싶은 일이 아닙니다.

왜 이것이 바뀌 었는지 모르겠습니다. 이것은 OS 변경이 아니라 객관적인 C 변경입니다. 또한 2.2 API 3.0 API 사이의 변경 사항에 대한 문서에는 언급이 없습니다.

응답 해 주셔서 감사합니다.

다른 팁

문제는 속성 정의에 있습니다. 변경해야합니다.

@property (readonly,nonatomic) NSMutableArray* comments

단점에서, 당신의 배열은 돌연변이로 노출됩니다 (하지만 그것이 당신이 예방하고 싶었던 것이라고 생각하지만).

이 코드가 OS 3.0에서 작동하지 않아야하는 이유는 없습니다. 이미 비슷한 코드가 작동합니다.

코드를 변경하면 어떻게됩니까?

NSArray *commentArray = comments.comments;
for (cComment *newComment in commentArray){
.....
}

나는 * 내가 당신의 코드에있는 곳에 이것을 썼을 때 방금 알아 차렸다 - 이것이 문제입니까? For Declaration에서 실제로 Comment* 여야합니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top