这个我想不通,希望有人能帮忙。
这是我的 ViewController.h 文件中的代码。
{
NSArray *bgImages;
int currentBackground;
bool hasShrunk;
bool hasMoved;
CGAffineTransform translate;
CGAffineTransform sizeShrink;
CGAffineTransform sizeGrow;
}
这是我在 ViewController.m 文件中的一些代码。
- (void)viewDidLoad {
hasMoved = NO;
hasShrunk = NO;
currentBackground = 0;
bgImages = [[NSArray alloc] initWithObjects:
[UIImage imageNamed:@"WallPaper_01.png"],
[UIImage imageNamed:@"WallPaper_02.png"],
[UIImage imageNamed:@"WallPaper_03.png"],
[UIImage imageNamed:@"WallPaper_04.png"],
[UIImage imageNamed:@"WallPaper_05.png"],
nil];
sizeShrink = CGAffineTransformMakeScale(.25,.25);
sizeGrow = CGAffineTransformMakeScale(1,1);
_myBackground.image = [bgImages objectAtIndex:currentBackground];
}
这是问题所在。此代码和整个项目在模拟器上运行良好,没有问题。当我将输出更改为实际的 iPhone 设备时,它会失败。该代码在分配名为 bgImages 的数组时失败。如果我在 viewDidLoad 上放置一个断点并逐行进入它,它会执行到数组分配行,然后跳过它。然后当它尝试执行该行时:
_myBackground.image = [bgImages objectAtIndex:currentBackground];
它将失败,因为数组为空。我不明白这如何在模拟器中工作,但不能在实际设备上工作。代码看起来并不正确,但我不知道为什么它会以这种方式运行。我编码不正确吗?