谁能帮我解决这个问题:我需要在确定的时间(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/