使用另一个类方法中的参数调用类方法

时间:2015-05-20 21:55:50

标签: ios swift appdelegate class-method method-call

在我的代码文件 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的答案将不胜感激。

2 个答案:

答案 0 :(得分:2)

你需要使用类函数才能以这种方式使用它。

class func cycleTimer(toggleOn: Bool) {

但是,我不确定线程​​安全性。

答案 1 :(得分:1)

您指定的功能不是类功能。在 func 关键字之前添加关键字。

更改后的代码:

class func cycleTimer

注意:在以前版本的Swift中,您必须使用以下代码(以及C语言或其他语言):

static func cycleTimer