4
tutorialImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Tap to Start.png"]];
tutorialImage.frame = CGRectMake(0, 0, 1024, 768);
[tutorialImage addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(blankMethod)]];
tutorialImage.userInteractionEnabled = YES; // i use this line and the previous line so that the user can't press any buttons behind the image
tutorialImage.alpha = 0;
[self.view addSubview:tutorialImage];
[self.view bringSubviewToFront:tutorialImage];
[UIView animateWithDuration:1.0f animations:^{
    tutorialImage.alpha = 1;
} completion:^(BOOL finished) {
    [self.view addSubview:tutorialImage]; // this line makes the image come back
}];

我知道您可能无法仅从这段代码中推断出问题,但是该代码中是否有任何内容使 tutorialImage 自动将其自身从其超级视图中删除?

无论如何,在 UIView 动画期间,图像会像平常一样淡入,然后消失。如果我在那里添加最后一行代码(注释的那一行),UIView 动画将使图像淡入并在中途闪烁一次。我刚刚添加了这张图片,没有代码告诉它从超级视图中删除自己。

如果您对解决问题或向您展示更多代码有任何想法,请告诉我,我会经常检查。

另外,我尝试重新启动模拟器,但没有成功,教程图像在 h 文件中声明UIImageView *tutorialImage;。当问题发生或任何事情时,控制台不会显示任何错误或任何事情。

编辑:

好吧,奇怪。我将 H 文件中的声明从更改UIImageView *tutorialImage;@property (strong, nonatomic) UIImageView *tutorialImage;然后使用 _tutorialImage 解决了问题。这与strong参数有关吗?我会标记谁能解释发生了什么是正确的。

4

1 回答 1

0

当你有一个弱引用时,一旦对象上不再有保留(当没有对象指向具有强指针的对象时),ARC 将释放对象。当您将@property 更改为strong 时,您现在告诉ARC 保留对象,直到父(您的视图控制器)被释放。

于 2013-08-26T18:40:57.820 回答