【问题标题】:iOS - Received memory warning for showing an image on Today ExtensioniOS - 在 Today Extension 上显示图像时收到内存警告
【发布时间】:2015-05-03 08:11:20
【问题描述】:

我正在尝试从 RSS 提要下载图像,然后在今天的扩展小部件中显示它,问题甚至是显示一个简单的图像会导致内存警告!:

_imageView.image = [UIImage imageName:xxx.jpg];

这是我使用UIImageView+AFNetworking下载图像的代码:

[_wImage setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[item.imagesFromContent objectAtIndex:0]]]

甚至尝试过NSData

  [_wImage setImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:
                                                  [NSURL URLWithString:[item.imagesFromContent objectAtIndex:0]]]]];

结果还是Received memory warning.

【问题讨论】:

  • 内存警告并不意味着您编写了错误的代码。这意味着您占用的空间比预期的要多。您应该更改您的实现以避免内存警告。内存泄漏和内存警告之间也有区别
  • @InderKumarRathore 是的,但是小部件崩溃了!!!!
  • 您下载的数据大小是多少?
  • @vivekDas 在 100 到 200 kb 之间

标签: ios objective-c iphone uiimage


【解决方案1】:

扩展程序的内存限制比普通 iOS 应用程序低得多。我建议重新考虑您的架构并减少扩展本身的工作。

【讨论】:

  • 我认为你是完全正确的。我们可以找出扩展的内存限制是多少吗?
【解决方案2】:

问题解决了!对于那些将面临这个问题的人,您必须通过以下方式调整图像大小:

-(UIImage *)resizeImage :(UIImage *)theImage :(CGSize)theNewSize {
    UIGraphicsBeginImageContextWithOptions(theNewSize, NO, 1.0);
    [theImage drawInRect:CGRectMake(0, 0, theNewSize.width, theNewSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

我的图像为 1024 x 768,大小为 100 到 200 kb!因此,使用此代码可以缩小其大小并节省大量内存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2012-09-28
    • 2012-07-05
    相关资源
    最近更新 更多