2013-09-30 74 views
1

我的應用程序有UITableView。我正在使用自定義單元格有標籤和UIImage。它正常滾動的工作正常。但如果我長時間滾動,圖像就會消失。並且有error = 24 (to many open files) in console滾動登錄時間後,表格視圖中的圖像正在消失

從谷歌,我得到的,而不是使用UIImage imageNamed,使用initWithContentOfFile。但是,這不起作用。請幫忙。


編輯寫入評論添加代碼:

這是用於將圖像添加到單元格的代碼:

UIImage *img =[[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"sms_icon" ofType:@"png"]]; [cell.img setImage:img]; [img release]; 

+0

發佈您的代碼。具體來說,無論你在cellForRowAtIndexPath中做什麼:還請解釋「長時間」後你的意思。 – Stavash

+0

如何在單元格中添加圖像。請提供用cellForRowAtIndexPath –

+0

寫的代碼我已經使用下面的代碼來設置圖片。 [cell.img setImage:[UIImage imageNamed:@「sms_icon.png」]];但是,這沒有奏效,所以我用下面的代碼: UIImage * img = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@「sms_icon」ofType:@「png」]]; [cell.img setImage:img]; [img release]; – user2618646

回答

0

The documentation says

的方法(+ ImageNamed :)在系統緩存中查找圖像具有指定名稱的e對象,並在該對象存在時返回該對象。如果匹配的圖像對象不在緩存中,則此方法從指定的文件加載圖像數據,將其緩存,然後返回結果對象。

在運行iOS 4或更高版本的設備上,如果設備的屏幕比例爲1.0,則行爲相同。如果屏幕的縮放比例爲2.0,則此方法首先搜索具有相同文件名的圖像文件,並附加@ 2x後綴。例如,如果文件的名稱是按鈕,它首先搜索按鈕@ 2x。如果它找到一個2x,它將加載該圖像並將返回的UIImage對象的scale屬性設置爲2.0。否則,它加載未修改的文件名並將scale屬性設置爲1.0。 在iOS 4及更高版本中,如果文件採用PNG格式,則不需要指定.PNG文件擴展名。在iOS 4之前,您必須指定文件擴展名。如果您的映像文件只顯示一次,並希望確保它不會添加到系統的緩存中,則應該使用imageWithContentsOfFile:來創建映像。 這將使您的一次性圖像保留在系統映像緩存之外,從而可能改善應用程序的內存使用特性。

+0

我試圖用imageWithContentsOfFile insd的imagednamed。但是我收到以下錯誤,圖像從屏幕上消失。 :ImageIO:CGImageReadCreateDataWithMappedFile'open'failed'/ Library/Application Support/iPhone Simulator/7.0-64/Applications/D891AC4C-F865-472C-AC5D-AE607AE7D985/eVoice_US.app/[email protected]。png' \t error = 24(打開的文件太多) – user2618646

+0

imagednamed可以正確使用嗎? – iGo

+0

結果對於兩個imagedname也是相同的。 – user2618646

相關問題