2009-08-18 55 views
1

我通常没有在iPhone sdk中使用NSEnumerator的问题,但这是我第一次在UIView的DrawRect函数中使用它。 NSEnumerator迭代器导致一个错误:请求成员“(member)”的东西不是结构或联合。为什么NSEnumerator迭代器不能识别DrawRect中的对象属性?

1)为什么会发生这种情况?
2)我该如何解决它?

(PS不被识别的部件是NSObject的子类,其.h文件中正确导入在UIView的.m文件,其的drawRect函数调用NSEnumerator的正确申报,并合成属性)

+0

你可以发布代码,而不是只声称它已正确声明吗? – peterb 2009-08-18 11:59:08

回答

1

很难说不看代码。但通常情况下,编译器问题的错误,当你有这样的事情:

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

....然后在执行....

MyClass *aPointer; 

int index = aPointer.someValue; 

在这种情况下,你预期的要

int index = aPointer->someValue; 

显然,语法对于属性有些不同。你声称该属性是正确声明和合成的,但很显然,编译器不同意。不过,我不确定没有看到一些代码片段,人们可以给你多少帮助。 NSEnumerator本身不认识你的成员是极不可能的。相反,您在该迭代器的上下文中编写的某些代码存在拼写错误。

+0

谢谢,这让我思考。我通过将NSEnumerator对象设置为我的自定义类的类型来解决问题,而不仅仅是'id'。 – RexOnRoids 2009-08-18 13:20:16

2

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

+0

是的!我忘记将对象设置为我的自定义类类型而不是id。这有帮助。谢谢。 – RexOnRoids 2009-08-18 13:15:06

相关问题