gpt4 book ai didi

ios - 你如何在动画 block 中返回一个值?

转载 作者:行者123 更新时间:2023-11-29 11:09:07 25 4
gpt4 key购买 nike

我正在尝试在包含动画 block 的方法中返回一个值。我在下面的代码工作得很好,但似乎应该有更好或更清洁的方法来做到这一点。有更好的方法吗?

 + (BOOL) flipImageAndTextForView:(UIView *) viewFlipImageAndText IsImageDisplayed:(BOOL) imageFlipDisplayed  flipTextView:(UITextView *) textViewDonate flipImage: (UIImageView *)pictureImage{

__block BOOL tempBool;

[UIView transitionWithView:viewFlipImageAndText
duration:0.3f
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^(void) {
if (imageFlipDisplayed)
{
[viewFlipImageAndText bringSubviewToFront:textViewDonate];
tempBool = FALSE;
}
else
{
[viewFlipImageAndText bringSubviewToFront:pictureImage];
tempBool = TRUE;
}
}
completion:^(BOOL finished) {
NSLog(@"Done!");
}];

if(tempBool)
{
return TRUE;
}
else{
return FALSE;
}

}

最佳答案

您的代码存在竞争条件,因为您无法保证在 flipImageAndTextForView:... 方法返回之前正确设置 tempBool。 transitionWithView:duration:options:animations:completion: 不阻塞。在任何情况下,以下几行:

    if(tempBool)
{
return TRUE;
}
else{
return FALSE;
}

应该被替换为:

    return tempBool;

如果它按照您编写的方式而不是第二种方式工作,那只是此处固有竞争条件的另一种症状。

最好的办法就是完全不要这样构造您的代码。完全在动画 block 之外测试 imageFlipDisplayed 或使用 transitionWithView:duration:options:animations:completion: 的完成 block 将消息发送到其他地方动画完成时需要。

关于ios - 你如何在动画 block 中返回一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12310095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com