gpt4 book ai didi

swift - 执行选择器 :withObject:afterDelay: is not passing an argument as expected

转载 作者:搜寻专家 更新时间:2023-11-01 06:55:36 26 4
gpt4 key购买 nike

我正在使用 performSelector 来控制 Controller 中某些方法的执行时间。在这种情况下,我希望传递给 animateIntroViews 的参数是 with 的值,但事实并非如此,而是一些非常大的负数,例如 -7878379202283

func runOnRenderAnimations() -> Void {        
perform(#selector(animateIntroViews), with: 0, afterDelay: 0.5)
perform(#selector(animateIntroViews), with: 1, afterDelay: 2.5)
}

@objc fileprivate func animateIntroViews(textPosition: Int) -> Void {
print(textPosition)
}

最佳答案

perform 不适用于 Int 等原始类型的参数。

更好的解决方案是使用 DispatchQueue asyncAfter。这允许您正常调用该方法。

func runOnRenderAnimations() -> Void {
DispatchQueue.main.asyncAfter(deadline: now() + 0.5) {
self.animateIntroViews(textPosition: 0)
}
DispatchQueue.main.asyncAfter(deadline: now() + 2.5) {
self.animateIntroViews(textPosition: 1)
}
}

关于swift - 执行选择器 :withObject:afterDelay: is not passing an argument as expected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53606005/

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