2009-08-18 14 views
1

私は通常、iPhone sdkでNSEnumeratorを使用しても問題はありませんが、これは初めてUIViewのDrawRect関数内で使用しています。 NSEnumeratorイテレータは、エラーを起こしています:構造体または共用体ではないメンバー "(member)"の要求NSEnumeratorイテレータがDrawRect内のオブジェクトプロパティを認識しないのはなぜですか?

1)なぜこのようなことが起こっていますか?
2)どうすれば回避できますか?

(PSメンバー認識されていないが、.hファイル適切にその機能のdrawRect NSEnumeratorを呼び出すのUIView .mファイルにインポートされNSObjectのサブクラスの正しく宣言し、合成されたプロパティです)

+0

コードが正しく宣言されていると主張するのではなく、コードを投稿できますか? – peterb

答えて

1

それは難しいです言い換えればコードを見ることなく。しかし、一般的に、あなたがこのような何か持っエラーコンパイラの問題:

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

を....してから実施して....この場合

MyClass *aPointer; 

int index = aPointer.someValue; 

、あなたが実際に

をしたいと思います
int index = aPointer->someValue; 

明らかに、構文はプロパティで少し異なります。プロパティは適切に宣言され、合成されていると主張しますが、明らかにコンパイラには同意しません。しかし、コード抜粋を見ることなく誰かがあなたに与えることができるどれくらいの助けがあるか分かりません。 NSEnumerator自体があなたのメンバーを認識していない可能性は非常に低いです。むしろ、あなたがそのイテレータのコンテキストで書いたコードには、タイプミスがあります。

+0

ありがとう、これは私の考えを得た。 NSEnumeratorオブジェクトを、単に 'id'ではなくカスタムクラスの型に設定することで、この問題を解決しました。 – RexOnRoids

2

もうひとつ注意すべきことは、NSEnumeratorが(オブジェクトをキャストしていない限り)オブジェクトポインタではなくidsを返すことです。 idはプロパティを持たないので、idのプロパティにアクセスしようとすると失敗します。 peterbが言ったように、コードを見ればここで多くの助けになるでしょう。

+0

はい! idの代わりにカスタムクラスの型にオブジェクトを設定するのを忘れてしまった。これは助けになりました。ありがとう。 – RexOnRoids

関連する問題