从后台返回后,我的iPhone应用程序崩溃了。原因:UIImage问题

时间:2010-09-23 16:04:02

标签: iphone variables background uiimage instance

首先,我想说这个网站太棒了!在创建我的iPhone应用程序时,它帮助我做了很多事情。

现在,我的问题是:

当我启动我的应用程序时,我有一个UIImageView根据

中的if / else语句加载图像

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

方法。这些图像分配如下:

BG.image = someImage;

当然,BG是UIImageView,而someImage是带有@property的@Vy的iVar。 someImage使用viewDidLoad中主要包的图像进行初始化:

- (void)viewDidLoad {

//init stuff from file
someImage = [UIImage imageNamed:@"FirstViewBG_5N.png"];

[super viewDidLoad];}

我的应用程序运行愉快,根据touchBegan(如上所述)加载图像,但是!

当我的应用程序被发送到后台并返回时,它会在第一次触摸时崩溃。

当我更换时:

BG.image = someImage

使用:

BG.image = [UIImage imageNamed:@"FirstViewBG_5N.png"];

它跑得很开心?!我认为someImage会被刷新或腐败吗?

我不想这样离开,因为imageNamed方法每次从磁盘读取,这会导致性能问题,我想?

我认为我的问题很明确?就是这样:

1-为什么我的应用程序会在从backgroud返回后崩溃 2-我该如何解决这个问题?

感谢您的所有帮助! 谢谢!

2 个答案:

答案 0 :(得分:1)

'someImage'上映。保留它

答案 1 :(得分:0)

  1. 可能是因为图像被释放了。 UIImage类中的imageNamed方法不会为someImage变量返回+1引用计数,因此您不拥有它。
  2. 假设someImage是一个具有retain do的属性:self.someImage = [UIImage imageNamed:@“FirstViewBG_5N.png”];
  3. P.S。小心在dealloc上释放它;)。