返回前台后的UIImage(iphone多任务)

返回前台后的UIImage(iphone多任务),iphone,objective-c,cocoa-touch,ios4,Iphone,Objective C,Cocoa Touch,Ios4,当我通过home按钮将应用程序发送到后台时,我的应用程序出现问题。我将尝试简短但完整地描述它: 我在@interface中声明了一个UIImage指针,其属性如下: @property (nonatomic, retain) UIImage *pauseImg; 此指针设置为在viewDidLoad中声明的图像,如下所示: pauseImg = [UIImage imageNamed:@"MP_pause.png"]; 然后我使用以下方法,将图像用作按钮: - (void)playSong

当我通过home按钮将应用程序发送到后台时,我的应用程序出现问题。我将尝试简短但完整地描述它:

我在
@interface
中声明了一个UIImage指针,其属性如下:

@property (nonatomic, retain) UIImage *pauseImg;
此指针设置为在
viewDidLoad
中声明的图像,如下所示:

 pauseImg = [UIImage imageNamed:@"MP_pause.png"];
然后我使用以下方法,将图像用作按钮:

- (void)playSong:(NSString *)song {
 if (![song isEqualToString:@"0"]) {
  NSString *filePath = [[NSBundle mainBundle] pathForResource:song ofType:@"mp3"];
  NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:filePath];
  self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:NULL];
  audioPlayer.currentTime = songPosition;
  [audioPlayer setDelegate:self];
  [audioPlayer setVolume:0.8];
  [audioPlayer play];
  NSLog(@"pauseImage: %@", pauseImg);
  [playButton setBackgroundImage:pauseImg forState:UIControlStateNormal];
  [fileURL release];
 }
}
除了当应用程序进入后台并返回前台时,这项工作没有问题。然后指针指向AvAudioPlayer对象,而不是图像,如上面插入的NSLog所示(第一行在进入背景之前,第二行在返回前景时,每次调用该方法):

我在苹果的任何文档中都看到,当进入后台时,图像缓存被清空。导致这种行为的原因是什么?为什么pauseImg会指向AvAudioPlayer对象?对这个问题有什么想法吗

提前感谢,, 尼科斯试试看

self.pauseImg = [UIImage imageNamed:@"MP_pause.png"];
而不是

pauseImg = [UIImage imageNamed:@"MP_pause.png"];
您必须使用访问器来保留pauseImg,否则它会自动删除。

试试看

self.pauseImg = [UIImage imageNamed:@"MP_pause.png"];
而不是

pauseImg = [UIImage imageNamed:@"MP_pause.png"];

您必须使用访问器来保留pauseImg,否则它将自动删除。

+1。还要注意,UIImage卸载和重新加载应该由iOS4自动处理。非常感谢,这解决了它+1.还要注意,UIImage卸载和重新加载应该由iOS4自动处理。非常感谢,这解决了它!