我通常在 iPhone sdk 中使用 NSEnumerator 没有问题,但这是我第一次在 UIView 的 DrawRect 函数中使用它。NSEnumerator 迭代器导致错误:请求成员“(成员)”不是结构或联合。
1)为什么会这样?
2)我该如何解决它?
(PS 未被识别的成员是 NSObject 子类的正确声明和合成属性,其 .h 文件已正确导入到其 drawRect 函数调用 NSEnumerator 的 UIView .m 文件中)
我通常在 iPhone sdk 中使用 NSEnumerator 没有问题,但这是我第一次在 UIView 的 DrawRect 函数中使用它。NSEnumerator 迭代器导致错误:请求成员“(成员)”不是结构或联合。
1)为什么会这样?
2)我该如何解决它?
(PS 未被识别的成员是 NSObject 子类的正确声明和合成属性,其 .h 文件已正确导入到其 drawRect 函数调用 NSEnumerator 的 UIView .m 文件中)
要记住的另一件事是 NSEnumerator 返回 id,而不是对象指针(除非您正在转换它们)。id 没有属性,因此任何访问 id 属性的尝试都会失败。正如 peterb 所说,在这里看到代码会有很大帮助。
不看代码很难说。但是当你有这样的事情时,通常编译器会发出这个错误:
@interface MyClass : NSObject {
int someValue;
}
@end
....然后在实施中....
MyClass *aPointer;
int index = aPointer.someValue;
在这种情况下,你实际上想要
int index = aPointer->someValue;
显然,属性的语法略有不同。您断言该属性已正确声明和合成,但显然编译器不同意。不过,如果没有看到一些代码摘录,我不确定任何人可以为您提供多少帮助。NSEnumerator 本身不太可能无法识别您的成员。相反,您在该迭代器的上下文中编写的某些代码有错字。