我正在使用performSelector
来控制控制器中某些方法的执行时间。在这种情况下,我希望传递给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)
}
答案 0 :(得分:2)
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)
}
}
答案 1 :(得分:0)
使用perform
选择器,您可以将参数作为NSNumber
而不是Int
传递,并将其作为Number
并将其转换为Int
{1}}功能。
示例:
animateIntroViews