ios - 如何安全地执行延迟选择器 iOS
问题描述
在viewDidAppear
我在 3 秒后向用户显示一个弹出窗口。如果用户viewController
在计时器开始后导航到另一个怎么办。当超级视图不再出现在屏幕上时,所选功能将尝试执行并显示弹出窗口。应用程序不会崩溃或抛出任何错误,但我想确认这是安全的。我应该在选择器方法中设置 aBOOL
和 assert isCurrentView
is吗?YES
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self performSelector:@selector(showPopup) withObject:nil afterDelay:2.5];
}
解决方案
在viewDidDisappear
-(void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:(BOOL)animated];
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(showPopup) object:nil];
}
推荐阅读
- c# - 在创建 IExternalSignature 对象时,它在 Windows 7 的 win 服务 (WAS) 中不起作用。但相同的代码在 Windows 8 中工作
- php - 为单选按钮元素分配 2 个值并在 PHP 中调用它们
- azure-cognitive-search - 在 2016-09-01-Preview 回归后,是否有一种新方法可以在 Azure 搜索中的 odata 筛选器中与 NaN 进行比较?
- shell - 使用 sed 在同一行上匹配相同的模式 n 次
- android - 2x 导航栏 Android
- javascript - 数据表导出到具有数据类型的 excel
- python - 如何在 Python 中解压缩已用 gzip 压缩的文本?
- time - 奇怪的时间格式
- angular - 在 Angular6 中上传到 AWS S3 之前更改文件名
- erlang - Erlang/Elixir 中如何进行消息恢复