1

私は通常、iPhone SDKでNSEnumeratorを使用しても問題はありませんが、UIViewのDrawRect関数内でNSEnumeratorを使用するのはこれが初めてです。NSEnumeratorイテレータがエラーを引き起こしています:構造体または共用体ではないもののメンバー "(member)"の要求。

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

(PS認識されないメンバーは、NSObjectサブクラスの適切に宣言および合成されたプロパティであり、その.hファイルは、drawRect関数がNSEnumeratorを呼び出すUIView .mファイルに適切にインポートされます)

4

2 に答える 2

2

もう1つ覚えておくべきことは、NSEnumeratorはオブジェクトポインターではなくIDを返すことです(キャストしている場合を除く)。IDにはプロパティがないため、IDのプロパティにアクセスしようとすると失敗します。ピーターブが言ったように、コードを見ることはここで大いに役立ちます。

于 2009-08-18T13:10:10.983 に答える
1

コードを見ずに言うのは難しいです。しかし、通常、次のようなものがある場合、コンパイラはそのエラーを発行します。

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

....そして実装中...

MyClass *aPointer;

int index = aPointer.someValue;

この場合、あなたは実際に欲しいでしょう

int index = aPointer->someValue;

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

于 2009-08-18T12:03:58.100 に答える