快速連結

2012年11月15日

使用UIImage造成LowMemory程式Crash

主要問題來自於圖片。
若圖片檔案很大、而且要載入非常大量(上百張)的圖,那就不要使用[UIImage imageNamed:]語法。小張且多次加載一張圖片在用此語法即可。

因此,最好改用:

 [UIImage imageWithContentsOfFile:[[NSBundle  mainBundle] pathForResource:@"檔名" ofType:@"副檔名"] ];

只是,如果是@2x的圖片,就無法自動取得,得自己動手寫。參考重載UIImage的方法以方便使用@2x圖片
根據建議。

最好還要在didReceiveMemoryWarning這個程序釋放所有內存:

- (void)didReceiveMemoryWarning{
   for (int i=0; i<TotalPage-1 ; i++) {
        UIScrollView *page_1 = (UIScrollView*)[MainViewer objectAtIndex:i];
        if ((NSNull *)page_1 != [NSNull null])
        {
            UIImageView *imgv = (UIImageView*)[page_1.subviews objectAtIndex:0];
            imgv.image = nil;
            [imgv removeFromSuperview];
            imgv = nil;
        }
   }
}

寫一下類似這樣子的語法為佳。


順便喊一句:我花了兩天才發現是imageNamed的問題(掩面哭)

沒有留言:

張貼留言

歡迎大家留言提問,我會答的都會盡力回答!
如果太久沒出現回應就是我又忘記回來看留言了TAT