gpt4 book ai didi

objective-c - UIView 子类 : performSelecter:withDelay: say 5 secs but the view is removed at 3rd sec?

转载 作者:行者123 更新时间:2023-11-28 22:45:15 27 4
gpt4 key购买 nike

我有一个 UIView 子类,在某些情况下我需要改变它的颜色一段时间,比如 5 秒,然后再改变颜色,我使用的方法是 performSelector:afterDelay: 和我传入的选择器是将颜色改回来,我想知道是否在触发颜色更改方法之前从 superview 中删除了 View ,这会导致任何问题吗?或者它只是因为 View 对象本身不存在而没有被调用?

谢谢!

最佳答案

当您将 performSelector:withObject:afterDelay: 发送到您的 View 时,该 View 实质上会创建一个计时器。计时器保留 View 和参数对象(在您的情况下可能是 UIColor )。因此,即使您从其父 View 中删除 View ,计时器仍会保留该 View 并防止其被释放。

当计时器触发时,它会改变(离屏) View 的背景颜色,然后释放 View 。如果那是对该 View 的最后一个强引用,则该 View 将被释放。

当您更改不在窗口层次结构中的 View 的背景颜色时,该 View 只会记住其新的背景颜色设置,但它不会做任何其他事情,例如尝试在屏幕上绘制自己。

因此,使用 performSelector:withObject:afterDelay: 更改 View 的背景颜色应该不会导致任何问题,即使您在延迟到期之前从其父 View 中删除 View 也是如此。

关于objective-c - UIView 子类 : performSelecter:withDelay: say 5 secs but the view is removed at 3rd sec?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13369810/

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