2010-02-25 38 views
0

爲什麼不能正常工作?訪問一個NSMutableArray中的精靈返回一個錯誤 - 簡單的問題

// spriteArray is an NSMutableArray 
int spriteWidth = [spriteArray objectAtIndex:0].contentSize.width; 

我得到的錯誤:

申請memeber 'contentSize' 的東西不是一個結構或聯合

如果我更改代碼:

CCSprite *tempSprite = [spriteArray objectAtIndex:0]; 
int spriteWidth = tempSprite.contentSize.width; 

然後它的好。

我試過鑄造:

int spriteWidth = (CCSprite*)[spriteArray objectAtIndex:0].contentSize.width; 

但它也不起作用。

有沒有辦法做到這一點,而不創建精靈參考?

回答

2

返回類型objectAtIndex:id,它不是struct也不是union。如果要使用投射,請嘗試使用

((CCSprite*)[spriteArray objectAtIndex:0]).contentSize.width 

否則,請使用臨時變量。

+0

是的,這是有效的。 我曾嘗試將演員安排在不同的位置,但我沒有嘗試上面的演員。 有關了解更多關於鑄造的建議? – codedeziner

2

我認爲.綁定比鑄造更緊密。嘗試

int spriteWidth = ((CCSprite*)[spriteArray objectAtIndex:0]).contentSize.width; 

請參閱this table

+0

dreamlax擊敗你。 無論如何感謝您的幫助! – codedeziner

+0

我打了他12秒,但沒關係。要明白爲什麼你需要這樣做,請參閱我鏈接到的表格。訪問器'.'比cast具有更高的優先級,因此編譯器會在更改類型之前嘗試執行該操作。要覆蓋這個,你可以使用圓括號。 –

+0

有個贊!它只值得接受的三分之二,但仍然! – dreamlax