2009-10-01 21 views
0

現在我工作的一個iPhone項目,我用實例類NSMutableArray,突然,沒有任何原因,在執行時NSMutableArray轉換爲UICachedDeviceRGBColor變得無法使用。的NSMutableArray轉換成UICachedDeviceRGBColor在執行時

我不知道該怎麼做,同一個對象一直工作得很好,直到今天。

我得到這個錯誤:

*** -[UICachedDeviceRGBColor count]: unrecognized selector sent to instance 0x4b3e440 
+0

聽起來像內存分配問題。你應該顯示一些代碼。它不可能自動「轉換」爲其他對象。你的代碼初始化NSMutableArray是什麼樣的? – 2009-10-01 17:35:49

+0

嗨馬特!!讓我加你的代碼: NSMutableArray * currentIngsGroup = [[NSMutableArray alloc] init]; currentIngsGroup =(NSMutableArray *)[allIngredientGroups objectAtIndex:0]; (@「訪問數組%d」,[currentIngsGroup count]); //這裏是因爲檢測到currentIngsGroup爲UICachedDeviceRGBColor對象:( – 2009-10-01 17:56:42

+0

)如果你把你的代碼放在你的問題中,你可以利用自動格式化並使它更易讀 – willc2 2009-10-05 06:34:39

回答

4

下一次,粘在你的問題,而不是評論你的代碼。這裏它的格式很好:

NSMutableArray *currentIngsGroup = [[NSMutableArray alloc] init]; 
currentIngsGroup = (NSMutableArray *)[allIngredientGroups objectAtIndex:0]; 
NSLog(@"accesing array %d", [currentIngsGroup count]); 

通常,我會說你描述的症狀表明你過度釋放某些東西。但是,該代碼顯示出對Objective-C的基本理解缺乏瞭解。我建議閱讀Introduction to Objective-C文件。

特別是,您正在第一行代碼中分配一個NSMutableArray實例。然而,第二行直接覆蓋可變數組引用,並引用allIngredientGroups數組索引0處的任何對象。

(NSMutableArray *)是完全沒有必要的。它不會強制數組中的任何對象成爲可變數組,因爲-objectAtIndex:返回(id),所以不需要強制轉換。

順便說一句:在第一行分配的數組正在泄漏。再次閱讀Objective-C的介紹來理解原因。

+0

Thanks bbum! 對不起,因爲我沒有把我的代碼放在正確的位置,我沒有解釋代碼行是從整個主控制器中取出來的(它們不在一起) 。非常感謝您的幫助。我無法讓應用程序再次工作,感謝上帝,我在SVN上有一個工作版本。再次感謝亞歷杭德拉:) – 2009-10-01 20:54:46

+0

樂意提供幫助。認真 - 閱讀介紹指南。這是好東西! – bbum 2009-10-02 04:56:51