在应用程序从后台返回后,UIButton imageForState不正确

我有一个在.h文件中声明的UIButton

@property (retain, nonatomic) IBOutlet UIButton *btnQuarter; 

当我有

 if ([self.btnQuarter imageForState:UIControlStateNormal] == [UIImage imageNamed:@"match.png"]) 

一旦应用程序加载它完美的作品。 但是,当应用程序从locking或在主屏幕上返回时,它不起作用。

试试这个代码:

  - (IBAction)nextQtr:(id)sender { if ([[sender imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"match.png"]]) } 

它不起作用,因为你正在比较指向对象的指针。 在你的情况下,他们指向不同的UIImage ,即使图像本身包含相同的数据。 [UIImage imageNamed:]caching图像,这就是为什么在应用程序启动时,它正常工作,但是当你进入后台caching释放(我认为),以释放内存。 当你从背景返回到前景时,[ UIImage imageNamed:]调用创build相同的UIImage ,但在另一个内存地址。