NSTimer 选择器中的方法无效
Posted
技术标签:
【中文标题】NSTimer 选择器中的方法无效【英文标题】:Method in NSTimer Selector is invalid 【发布时间】:2015-11-27 21:21:51 【问题描述】:self.presentViewController(playerViewController, animated: true)
self.playerViewController.player?.play()
self.playerTimer = NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector:Selector("stopAfter4seconds:"), userInfo: nil, repeats: false)
func stopAfter4seconds(timer: NSTimer)
self.playerViewController.player?.pause()
self.playerViewController.player = nil
self.dismissViewControllerAnimated(true, completion: nil)
self.presentViewController(GameViewController1(), animated: true, completion: nil)
所以.. 我已经尝试了几乎所有方法来让这个 NSTimer 正常工作,但似乎没有任何进展。 我试过了:
在中间添加和删除冒号
("stopAfter4seconds:")
在参数中添加和删除(timer:NSTimer)
stopAfter4seconds()
在
中添加和删除第二个选择器selector:Selector("stopAfter4seconds:")
我遇到的错误:
stopAfter4seconds]:无法识别的选择器发送到实例 0x7bb1ae90
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序
线程 1:信号 SIGABRT
我不知道我做错了什么,所以如果有人有任何想法,请告诉我。
【问题讨论】:
我无法得到你想要做的事情。 查看这个:***.com/a/27435406/2125010 【参考方案1】:如果方法是这样定义的:
func stopAfter4seconds(timer: NSTimer) ...
然后你会像这样创建计时器:
NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector: Selector("stopAfter4seconds:"), userInfo: nil, repeats: false)
或者您可以省略 Selector()
并执行以下操作:
NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector: "stopAfter4seconds:", userInfo: nil, repeats: false)
不过,您似乎已经在调用presentViewController
的方法中实现了这个stopAfter4seconds
函数。这个stopAfter4seconds
本身必须是一个方法,而不是在另一个方法中定义。
【讨论】:
【参考方案2】:import UIKit
class ViewController: UIViewController
override func viewDidLoad()
super.viewDidLoad()
override func viewDidAppear(animated: Bool)
print("run viewDidAppear")
myFunction1()
func myFunction1()
print("call timer")
NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("myFunction2"), userInfo: nil, repeats: false)
func myFunction2()
print("do stuff")
【讨论】:
我的 NStimer 在方法 override func viewDidAppear(animated:Bool) 我是否应该将所有代码移动到一个新方法中,然后将该方法调用到 viewDidAppear 中? 我猜是这样,尝试将你的函数移到类中。 将我的函数移到顶部的整个类视图中,似乎没有帮助 你能简单解释一下你想什么时候运行NSTimer?
关闭presentViewController
之后?以上是关于NSTimer 选择器中的方法无效的主要内容,如果未能解决你的问题,请参考以下文章