2009-08-18 39 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

相關問題