UIImageView自动从self.view中删除自己

时间:2013-07-25 01:56:53

标签: ios cocoa-touch uiimageview

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自动从它的superview中删除它吗?

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

如果您对修复问题或向您显示更多代码有任何想法,请告诉我。我会经常查看。

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

编辑:

好的,很奇怪。我将H文件中的声明从UIImageView *tutorialImage;更改为@property (strong, nonatomic) UIImageView *tutorialImage;,然后使用_tutorialImage修复了问题。这与强参数有关吗?我将标记谁可以解释正在发生的事情。

1 个答案:

答案 0 :(得分:0)

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