UIImage导致我的应用程序崩溃:收到内存警告

时间:2013-10-29 20:46:20

标签: ios objective-c uiimage ios7

自从我将设备升级到iOS7后,我收到了很多警告

2013-10-29 15:20:16.592 App Name[3820:60b] Received memory warning.
2013-10-29 15:20:16.695 App Name[3820:60b] Received memory warning.
2013-10-29 15:20:22.711 App Name[3820:60b] Received memory warning.

然后我的应用崩溃了

  

因内存压力而终止

似乎导致错误的是背景图片:

- (void)viewDidLoad{
  [super viewDidLoad];
     //This will cause problems if I uncomment
    //self.view.backgroundColor = [UIColor colorWithPatternImage:
    //                            [UIImage imageNamed:@"background.png"]];
  }

奇怪的是,它不会发生在模拟器上,只发生在设备上。

1 个答案:

答案 0 :(得分:0)

在较小/较旧的设备上加载大图像并不顺利。您应该为要使应用程序可用的设备/分辨率命名图像,并在运行时加载适当的图像。 iOS会为您处理分辨率(如果您遵循命名标准),但对于一般图像,您需要自己处理平台部分。为此,请使用[[UIDevice currentDevice] userInterfaceIdiom][UIScreen mainScreen].bounds的组合。

例如(在最基本的级别,不区分iPhone屏幕尺寸):

background_iPhone.png
background_iPhone@2x.png
background_iPad.png
background_iPad@2x.png

此外,如果您可以使用磁贴作为应用的背景,请执行此操作。这是指定图像的最有效方式,SDK将为您平铺图像。