Ios 为什么可以';我不能在我的类属性中初始化NSTimer吗?
我的代码如下。它显示错误“由于信号:分段故障:11导致命令失败”。如果我在注释部分初始化我的计时器,那么就可以了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
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设置的,因此它应该早于计时器的运行循环。