我很失望,自从我遇到这个记忆问题已经一个多星期了,我找不到解决办法。
我的应用程序使用了大量来自 facebook 的高分辨率照片。
我使用 SDwebimageManager 下载和缓存我的所有照片。
当我创建我的 photoviewcontroller 的实例时,平均有 40 张照片被下载和缓存并出现在屏幕上。
正如你想象的那样,我必须经常为我的控制器的每个实例清除缓存。
但是,我的 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];
}
我使用 NSDictionary 来收集我所有的照片,当最后一张照片被下载时,我重新加载我的收藏视图。如果我回到我的 ui 并重新加载我的控制器,我的内存会增长并且我很快就会收到警告......并且应用程序崩溃了。
当我使用 SDCache 清除内存缓存时,什么也没有发生。
这很奇怪,因为如果我在此行之后放置 [image release]:
[self.photosload setObject:image forKey:[NSString stringWithFormat:@"%i", i]];
[image release];
当我调用 SDImagecache 时,我的内存被清除了,但正如你可以想象的那样......如果我这样做......我使用这本字典“photosload”和一个 collectionview,因为我释放了每张图片,当我在 collectionview 中滚动时我的应用程序崩溃...
我完全失望了,我不知道发生了什么……
非常感谢您的帮助我完全被这个内存问题所困扰