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

问题描述 投票:1回答:2

在我的代码文件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)
}

但我得到了这个错误:

无法使用类型为'(Bool)'的参数列表调用'cycleTimer'

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

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

ios swift appdelegate class-method method-call
2个回答
2
投票

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

class func cycleTimer(toggleOn: Bool) {

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


1
投票

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

更改的代码:

class func cycleTimer

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

static func cycleTimer
© www.soinside.com 2019 - 2024. All rights reserved.