Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么可以';我不能在我的类属性中初始化NSTimer吗?_Ios_Swift_Timer_Properties_Nstimer - Fatal编程技术网

Ios 为什么可以';我不能在我的类属性中初始化NSTimer吗?

Ios 为什么可以';我不能在我的类属性中初始化NSTimer吗?,ios,swift,timer,properties,nstimer,Ios,Swift,Timer,Properties,Nstimer,我的代码如下。它显示错误“由于信号:分段故障:11导致命令失败”。如果我在注释部分初始化我的计时器,那么就可以了 import UIKit class ViewController: UIViewController { var networkManager = NetworkManager.sharedInstance // var timer: Timer? var timer: Timer? = Timer.scheduledTimer(timeInterval

我的代码如下。它显示错误“由于信号:分段故障:11导致命令失败”。如果我在注释部分初始化我的计时器,那么就可以了

import UIKit

class ViewController: UIViewController {

    var networkManager = NetworkManager.sharedInstance

//    var timer: Timer?
    var timer: Timer? = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.doSomething), userInfo: nil, repeats: true)

    override func viewDidLoad() {
        super.viewDidLoad()

//        timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.doSomething), userInfo: nil, repeats: true)
    }

    func doSomething() {
    }

}
有趣的是,我不能初始化属性中的计时器,但我可以初始化一个单例

是什么原因造成了这种差异?
也许是关于runloop什么的?有人能解释一下吗?谢谢。

因为初始化可能发生在为计时器设置运行循环之前。这,还有,在初始化之前,您无法访问
self
来引用实例。@vacawama有完整的答案。@allenlinli您测试过我下面的答案吗?@AlexanderMomchliov我想这不是原因。默认运行循环是使用UIApplication设置的,因此它应该早于计时器的运行循环。因为初始化可能发生在为计时器能够使用而设置任何运行循环之前。即,还有,在初始化之前,您无法访问
self
来引用实例。@vacawama有完整的答案。@allenlinli您测试过我下面的答案吗?@AlexanderMomchliov我想这不是原因。默认运行循环是使用UIApplication设置的,因此它应该早于计时器的运行循环。