1

我通常在 iPhone sdk 中使用 NSEnumerator 没有问题,但这是我第一次在 UIView 的 DrawRect 函数中使用它。NSEnumerator 迭代器导致错误:请求成员“(成员)”不是结构或联合。

1)为什么会这样?
2)我该如何解决它?

(PS 未被识别的成员是 NSObject 子类的正确声明和合成属性,其 .h 文件已正确导入到其 drawRect 函数调用 NSEnumerator 的 UIView .m 文件中)

4

2 回答 2

2

要记住的另一件事是 NSEnumerator 返回 id,而不是对象指针(除非您正在转换它们)。id 没有属性,因此任何访问 id 属性的尝试都会失败。正如 peterb 所说,在这里看到代码会有很大帮助。

于 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 回答