在我的代码文件 MyItemVC.swift 中,我定义了以下类和方法:
class MyItemVC: UIViewController, UITextViewDelegate {
var timer = NSTimer()
func cycleTimer(toggleOn: Bool) {
if toggleOn == true {
// Timer calls the replaceItem method every 3 seconds
timer = NSTimer.scheduledTimerWithTimeInterval(3, target: self, selector: Selector("replaceItem"), userInfo: nil, repeats: true)
} else {
timer.invalidate() // stop the timer
}
}
}
在这个类的其他地方,我调用cycleTimer(true)来启动计时器,使用cycleTimer(false)来停止它。
现在,我还想在我的 AppDelegate.swift 代码文件中使用常用方法,以便在应用程序从活动状态变为非活动状态时启动和停止计时器。但是我在从该类调用cycleTimer方法时遇到了麻烦。
我在Stack Overflow上找到了一个答案,建议我可以这样称呼它:
func applicationWillResignActive(application: UIApplication) {
MyItemVC.cycleTimer()
}
但我也需要传递一个论点。所以我试着这样称呼它:
func applicationWillResignActive(application: UIApplication) {
MyItemVC.cycleTimer(true)
}
但我收到了这个错误:
无法调用' cycleTimer'使用类型'(Bool)'
的参数列表
如何在传递参数时从AppDelegate方法调用此方法?
感谢您的帮助。我意识到这一定是一个非常基本的问题,但我是编程新手并尝试使用Swift自学。使用Swift而不是Obj-C的答案将不胜感激。
答案 0 :(得分:2)
你需要使用类函数才能以这种方式使用它。
class func cycleTimer(toggleOn: Bool) {
但是,我不确定线程安全性。
答案 1 :(得分:1)
您指定的功能不是类功能。在 func 关键字之前添加类关键字。
更改后的代码:
class func cycleTimer
注意:在以前版本的Swift中,您必须使用以下代码(以及C语言或其他语言):
static func cycleTimer