gpt4 book ai didi

ios - 通过 NSTimer 在 ViewDidLoad 中调用函数 - swift

转载 作者:行者123 更新时间:2023-11-29 02:06:13 25 4
gpt4 key购买 nike

我正在尝试快速为一些贝塞尔路径制作动画,我需要让其中一些在设定的延迟后启动。为此,我必须在 viewDidLoad 函数中编写这两组代码。

下面是一些具有相同想法的示例代码:

override func viewDidLoad() {
super.viewDidLoad
func testFunc() {
println("Hello")
}

var frontOfBaseTimer = NSTimer.scheduledTimerWithTimeInterval(3, target: self, selector: Selector("testFunc"), userInfo: nil, repeats: false)
}

这会在加载 View 3 秒后使应用程序崩溃。错误消息使我相信在这种情况下唯一的问题是目标属性。

我应该在此处更改什么才能使其正常工作?

最佳答案

如果您确定要使用自己的延迟循环,请考虑使用 GCD 和dispatch_after 方法。该方法采用一个闭包,并在指定的延迟后调用该闭包,这几乎正是您想要的。您将为队列参数传递 nil,以便您的闭包将在主队列上运行。

我创建了一个全局函数延迟,让我可以轻松调用dispatch_async,而不必弄清楚它令人困惑的参数:

func delay(delay: Double, block:()->())
{
let nSecDispatchTime = dispatch_time(DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC)));
let queue = dispatch_get_main_queue()

dispatch_after(nSecDispatchTime, queue, block)
}

你可以这样调用它:

delay(2.0)
{
//code to fire after a delay
}

关于ios - 通过 NSTimer 在 ViewDidLoad 中调用函数 - swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29769660/

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