我有一个以前从未见过的非常奇怪的错误。我以前使用过这个代码数百次,但由于某种原因,afterDelay 被完全忽略了。
我的代码:
- (void)runIntro
{
if([self introDone])return;
UIImageView* back = [[UIImageView alloc] initWithFrame:[[AppDelegate shared] frame]];
[back setImage:[[AppDelegate shared] bgImage]];
[back setContentMode:UIViewContentModeScaleAspectFill];
[self.view addSubview:back];
UIImageView* target = [[UIImageView alloc] initWithFrame:CGRectMake(([[AppDelegate shared] width]-250)/2.0, ([[AppDelegate shared] height]-350)/2.0, 250, 72)];
[target setImage:[UIImage imageNamed:@"bpside.png"]];
[self.view addSubview:target];
Parabolic* wally = [[Parabolic alloc] initWithFrame:CGRectMake(([[AppDelegate shared] width]-200)/2.0, ([[AppDelegate shared] height]-314)/2.0+250, 200, 200)];
[wally setImage:[UIImage imageNamed:@"wallyside1.png"]];
[self.view addSubview:wally];
[self performSelector:@selector(moveWallyIntro:) withObject:wally afterDelay:1];
[self performSelector:@selector(moveWallyIntro:) withObject:wally afterDelay:2];
}
- (void)moveWallyIntro:(Parabolic*)wally
{
[wally runPBM:50 withDY:300 withDuration:0.5];
}
我知道所有其他代码都可以正常工作,但是无论出于何种原因,选择器都会立即执行,这会导致一个重大问题。此代码在viewWillAppear
方法结束时运行。我以前用这种方式编程过很多次,这是我第一次看到这种情况发生。
更新:
如果我删除添加back
UIImageView 的代码,这不再是问题。如何以像这样的纵横比填充格式添加巨型图像(3000x2000),以免导致程序挂起?我为 iphone、ipad 等使用相同的背景图像,因此对于视网膜 iPad 来说它需要很大......