【发布时间】:2012-10-10 17:38:23
【问题描述】:
我有问题,需要帮助。 我有一张桌子,在单元格上我有图像的水平滚动。图片是从网上下载的。 当我下载第 6 张图片时,我的应用程序崩溃了。 对于异步上传,我使用https://github.com/rs/SDWebImage
-(void) fastCreateImage
{
int tempID = self.currentPageNow;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1.2f * NSEC_PER_SEC), dispatch_get_current_queue(), ^{
if(tempID==self.currentPageNow)
{
NSUInteger objIdx = [self.imageViews indexOfObject: [NSNumber numberWithInt:tempID]];
if(objIdx != NSNotFound) {
NSLog(@"WAS CACHED!!!!!!");
}
else
{
UIImageView *myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 193.5f)];
NSString *urlInString =[NSString stringWithFormat:@"%@/uploads/gallery/hotels/%@",webSite,[self.urlGarbage objectAtIndex:self.currentPageNow]];
SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadWithURL:[NSURL URLWithString:urlInString]
delegate:self
options:0
success:^(UIImage *image, BOOL cached)
{
myImageView.image = image;
[[self.views objectAtIndex:tempID] addSubview:myImageView];
[self.imageViews addObject:[NSNumber numberWithInt:tempID]];
NSLog(@"LOADED IMG");
}
failure:nil];
[myImageView release];
}
}
});
}
【问题讨论】:
-
你的意思是下载而不是上传吗?你说“我的应用程序崩溃了”。什么样的崩溃?从控制台发布异常文本。您是否启用了 Zombies 进行调试?
-
对不起,我的意思是下载图片。我收到消息收到内存警告。 NSZombieEnabled = YES,但我无法跟踪错误
-
mb 我应该使用 [manager release] 吗?
-
如果您收到内存警告,可能是您正在下载的图像真的很大并且占用了太多内存,或者正在运行其他占用内存的应用程序(尝试重新启动您的设备)。不要释放
manager,你正在使用一个只存在一次的单例实例(shared Manager)。在您的代码中查找对alloc的调用,并确保每个 alloc 都与release配对。 -
您正在加载的图像有多大?它们的大小(以 kB 为单位)以及它们的维度(x、y 以像素为单位)是多少?
标签: iphone objective-c