使用另一个 class 方法的参数调用 class 方法

Call class method with argument from another class method

在我的代码文件 MyItemVC.swift 中,我定义了以下 class 和方法:

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
        }
    }
}

在此 class 的其他地方,我调用 cycleTimer(true) 启动计时器,调用 cycleTimer(false) 停止计时器。

现在,我还想在我的 AppDelegate.swift 代码文件中使用常用方法来在应用程序从活动状态变为非活动状态时启动和停止计时器。但是我无法从 class.

调用 cycleTimer 方法

我在 Stack Overflow 上找到了一个答案,建议我可以这样称呼它:

func applicationWillResignActive(application: UIApplication) {

    MyItemVC.cycleTimer()
}

但是我还需要传入一个参数。所以我试着这样称呼它:

func applicationWillResignActive(application: UIApplication) {

    MyItemVC.cycleTimer(true)
}

但是我得到了这个错误:

Cannot invoke 'cycleTimer' with an argument list of type '(Bool)'

如何在传递参数时从 AppDelegate 方法中调用此方法?

感谢您的帮助。我意识到这一定是一个非常基本的问题,但我是编程新手并尝试使用 Swift 自学。使用 Swift 而不是 Obj-C 的答案将不胜感激。

您需要使用 class 功能才能以这种方式使用它。

class func cycleTimer(toggleOn: Bool) {

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

您指定的函数不是 class 函数。在 func 关键字之前添加 class 关键字。

修改后的代码:

class func cycleTimer

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

static func cycleTimer