我非常失望,因爲我有這個內存問題已經過了一個多星期了,我找不到解決方案。用SDWebimagemanager iOS清除內存iPhone
我的應用程序使用了很多來自Facebook的高分辨率照片。
我使用SDwebimageManager來下載和緩存我的所有照片。
當我創建一個我的photoviewcontroller實例時,平均有四十張照片被下載和緩存,並且出現在屏幕上。
正如你想象的那樣,我必須經常爲每個控制器實例清除Cache。
但是,我有一個問題SDWebimage我不能清除緩存...的自由物理內存大小滴速和我的應用程序崩潰總是很快
我用故事創造像控制器是(你可以看到我先清除緩存):
if([[segue identifier] isEqualToString:@"FriendView"])
{
SDImageCache *imageCache = [SDImageCache sharedImageCache];
[imageCache clearMemory];
if (self.friends != nil) {
[self.friends release];
}
NSString *s = [friendsid objectAtIndex:indexload];
self.friends = (MyFriendViewController *)[segue destinationViewController];
self.friends.friend = s;
self.friends.Manager = self.Manager;
}
而在我用我的經理下載每一張照片那樣的控制器:
for(int i=0;i<items.count;i++) {
[self.Manager downloadWithURL:[NSURL URLWithString:[self.items objectAtIndex:i]]
delegate:self
options:0
success:^(UIImage *image,BOOL cached)
{
[self.photosload setObject:image forKey:[NSString stringWithFormat:@"%i", i]];
if (photosload.count == items.count) {
[self.collectionView reloadData];
}
}
failure:nil];
}
我使用NSDicti onary收集我的所有照片,並在最後一張照片下載時, 我重新加載我的收藏視圖。 如果我回到我的用戶界面並重新加載我的控制器,我的記憶就會增長,我很快就會發出警告......並且應用程序崩潰。
使用SDCache清除內存緩存時沒有任何反應。
這是非常奇怪的,因爲如果我把一個[圖像版本]這行後:當我打電話SDImagecache但
[self.photosload setObject:image forKey:[NSString stringWithFormat:@"%i", i]];
[image release];
我的記憶被清除,你可以想像......如果我這樣做... 我使用這個字典「photosload」與一個collectionview只是之後,因爲我釋放每個圖像我的應用程序崩潰,當我滾動collectionview ...
我完全失望我不知道發生了什麼事...
T hank真的爲你的幫助我完全堅持這個內存問題
謝謝您的回覆,我會嘗試你的想法,我並不在同一時間需要40張圖片,但我已下載的圖片之前,我重裝的CollectionView,因爲如果我滾動(加載照片是異步和隨機的),我看到空單元格太早了才成爲圖像。我想要一個完美的用戶體驗,當用戶滾動,我更喜歡沒有內存警告..是不可能清除緩存之前內存警告就像我已經做了我的例子? – user1772370
只是嘗試一下,當你執行'setImageWithURL'時,它會取消之前的請求,因此它應該需要更多時間。我之前一直在使用這個庫,它對我來說工作得很好。 – Ezeki
HM,你知道,你甚至不必調用'clearMemory'因爲'SDImageCache'是''UIApplicationDidReceiveMemoryWarningNotification一個觀察者,所以它會自動清除內存。 – Ezeki