ios - 延迟后触发具有 2 个参数的函数

标签 ios selector grand-central-dispatch nstimer

谁能帮我解决这个问题:我需要在确定的时间(2 或 3 秒)后触发一个带有 2 个参数的函数。
我试图用 dispatch_after block 来完成它,但它可以引导我将消息发送到已释放的实例。
我也尝试过使用 NSInvocation 和一个预定的计时器,但我的参数是 bool 值,所以我不能使用 setArgument:atIndex:

有什么建议吗?

编辑 添加示例代码

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2.5 * NSEC_PER_SEC ), dispatch_get_main_queue(), ^{
    [myPullableView setOpened:NO animated:YES];
});

当 View Controller 被释放时,它的属性(以及 myPullableView)也被释放。

顺便说一句,我正在使用 ARC。

最佳答案

保持你目前的 block 方法,只是让引用变弱,这样引用是安全的:

__weak typeOf(myPullableView) *weakPullableView = myPullableView;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2.5 * NSEC_PER_SEC ), dispatch_get_main_queue(), ^{
    [weakPullableView setOpened:NO animated:YES];
});

关于ios - 延迟后触发具有 2 个参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21399941/

相关文章:

ios - Objective-C JSON 数据

ios - 默认情况下是否启用匿名身份验证?

python - 如何在 pyobjc 中生成线程

iphone - GCD、 block 和核心数据卡住(不是崩溃)

ios - "Expression was too complex to be solved in reasonable time..."是什么意思,我该如何解决?

ios - UITableViewCell 中的 NSLayoutConstraint 中断

php - 如何在 PHP 中获取 CSS 选择器?

ios - 选择器方法不调用

jQuery 单属性、带过滤器的多值选择器

ios - 调度组不阻止代码运行