为什么NSEnumerator迭代器不能识别DrawRect中的对象属性?

时间:2009-08-18 10:07:05

标签: iphone objective-c cocoa-touch uikit nsenumerator

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

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

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

2 个答案:

答案 0 :(得分:2)

要记住的另一件事是NSEnumerator返回id,而不是对象指针(除非你正在施放它们)。 id没有属性,因此任何尝试访问id的属性都将失败。正如彼得布所说,看到代码将在这里有所帮助。

答案 1 :(得分:1)

没有看到代码就很难说。但是,当你有这样的事情时,编译器通常会发出错误:

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

....然后在实施....

MyClass *aPointer;

int index = aPointer.someValue;

在这种情况下,你真的想要

int index = aPointer->someValue;

显然,语法与属性略有不同。您声明该属性已正确声明和合成,但显然编译器不同意。不过,如果没有看到一些代码摘录,我不确定有多少帮助可以给你。 NSEnumerator本身不太可能无法识别您的成员。相反,你在迭代器的上下文中编写的一些代码有一个错字。