错误:类方法只能在类型上声明



嗨,我已经写了一些代码(使用swift):

import UIKit
import Foundation
func timerFireMethod(timer1: NSTimer) { }
class ViewController: UIViewController {
    func timerFireMethod(timer1: NSTimer) { }
    var greytitle : UIImage = UIImage(named:"AppTitle.png")
    var redtitle : UIImage = UIImage(named:"AppTitleRed.png")
    @IBOutlet var maintitle: UIImageView
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib
         class func scheduledTimerWithTimeInterval(_ seconds: NSTimeInterval = 0.1,
            target timer1m: AnyObject!,
            selector timer1: Selector,
            userInfo nil: AnyObject!,
            repeats true: Bool) -> NSTimer!
        maintitle.image = greytitle
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

在它写class function的地方我得到了一个错误

"Class Methods may only be declared on a type"
我知道这是一个相当新手的问题,但如果有人能解释一下我做错了什么,我将不胜感激!我还注意到有4行被高亮标记为代码,但它们是代码。

您的问题是您试图在另一个方法(viewDidLoad)内编写方法(timerWithInterval)。你也没有以正确的方式创建计时器。我看到你声明了一个类函数来做这个,所以我将用它作为一个例子。这样做:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib

}
class func scheduledTimerWithTimeInterval(_ seconds: NSTimeInterval = 0.1,
        target timer1m: AnyObject!,
        selector timer1: Selector,
        userInfo nil: AnyObject!,
        repeats doesRepeat: Bool) -> NSTimer!{
    //maintitle.image = greytitle
    var timer = NSTimer.scheduledTimerWithTimeInterval(seconds, target: timer1m, selector: timer1, userInfo: nil, repeats:doesRepeat)
    (NSRunLoop.currentRunLoop()).addTimer(timer, forMode:NSDefaultRunLoopMode)
}

要创建计时器,您应该使用

var timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "someFunction", userInfo: nil, repeats: false)

最新更新