2009-08-18 3 views
1

저는 대개 iPhone SDK에서 NSEnumerator를 사용하여 문제가 없지만 UIView의 DrawRect 함수 내에서 처음 사용합니다. NSEnumerator 이터레이터가 오류를 일으키고 있습니다. 구조체 또는 공용체가 아닌 "멤버"멤버에 대한 요청입니다.NSEnumerator 반복자가 DrawRect 내의 개체 속성을 인식하지 못하는 이유는 무엇입니까?

1) 왜 이런 일이 발생합니까?
2) 어떻게 해결할 수 있습니까?

(PS 인식하지 부재는 .H 파일 적절히 누구의 drawRect 함수 NSEnumerator를 호출하여 UIView하는 .m 파일 가져 NSObject의 서브 클래스 제대로 선언 및 합성 속성 임)

+0

코드를 올바르게 선언했다고 주장하는 대신 코드를 게시 할 수 있습니까? – peterb

답변

1

이 어렵다 to say 코드를 보지 않고 말하십시오. 그러나 오류가 일반적으로 컴파일러 문제는이 같은 때이 경우 구현 ....

MyClass *aPointer; 

int index = aPointer.someValue; 

에서 다음

@interface MyClass : NSObject { 
    int someValue; 
} 
@end 

....와, 당신은 실제로

을 싶어
int index = aPointer->someValue; 

분명히 구문은 속성과 약간 다릅니다. 속성이 적절하게 선언되고 합성되었다고 주장하지만 컴파일러는 분명히 동의하지 않습니다. 그래도 코드 발췌 부분을 보지 않고도 누구에게 도움을 줄 수 있는지 잘 모르겠습니다. NSEnumerator 자체가 회원을 인식하지 못할 가능성은 극히 낮습니다. 오히려, 반복자의 컨텍스트에서 작성한 일부 코드에는 오타가 있습니다.

+0

감사합니다. NSEnumerator 객체를 'id'대신 사용자 정의 클래스의 유형으로 설정하여이 문제를 해결했습니다. – RexOnRoids

2

기억해야 할 다른 점은 NSEnumerator가 객체 포인터가 아니라 ids를 반환한다는 것입니다 (캐스팅하지 않는 한). id에는 속성이 없으므로 id의 속성에 액세스하려는 모든 시도가 실패합니다. peterb가 말했듯이, 코드를 보는 것이 많은 도움이 될 것입니다.

+0

예! 개체 대신 ID 대신 사용자 지정 클래스 형식을 설정하는 것을 잊었습니다. 이것은 도움이되었습니다. 감사. – RexOnRoids

관련 문제