- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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/
我正在使用 UIWebView 并且不希望导航栏出现,除非用户点击屏幕上任何非链接的地方。所以我有这段代码在延迟后显示导航栏: - (void)handleTapGesture:(UITapGestu
在处理许多滚动图像时,您必须避免在用户快速滚动时浏览时加载的问题。最简单且通常是最好的解决方案非常简单: 只是在做任何事情之前引入一个小的延迟(比如 .350)。 如果图像已经在缓存中,则加载它。否则
我有一个 UIView 子类,在某些情况下我需要改变它的颜色一段时间,比如 5 秒,然后再改变颜色,我使用的方法是 performSelector:afterDelay: 和我传入的选择器是将颜色改回
我是一名优秀的程序员,十分优秀!