MCM*_*tan 1 nstimer swift deinit
使用NSTimer之后,将永远不会调用类deinit方法。该类是用Swift编写的,我在“ init”处调用计时器,如下所示:
init(eventsDistributor : EventsDistributor, orderSide : ORDER_SIDE, stockViewModel : StockViewModel, orderType : ORDER_TYPE_ENUM, orderPrice : NSNumber) {
self.eventsDistributor = eventsDistributor
self.orderSide = orderSide
self.stockViewModel = stockViewModel
self.orderType = orderType
self.orderPrice = orderPrice
super.init()
_events()
loadPreOrderDetails()
//Here I call the Timer:
var reloadTimer = NSTimer.scheduledTimerWithTimeInterval(10.0, target: self, selector: "loadSecurityTradeInfo", userInfo: nil, repeats: true)
reloadTimer.fire()
}
Run Code Online (Sandbox Code Playgroud)
我也尝试将NSTimer用作局部变量,但在该处没有成功...有人遇到此问题吗?我可以在Swift中使用一个不会导致不取消分配类的计时器吗?谢谢
计时器对其目标(自己)有很强的参考作用。并且将目标调度到运行循环,该循环对它具有强大的引用,直到计时器无效为止。除非您使计时器无效(reloadTimer.invalidate,或者可能来自loadSecurityTradeInfo方法内部),否则该对象不会消失。
这实际上非常好,因为在对象消失之后,计时器向对象发送loadSecurityTradeInfo消息将是一个非常非常糟糕的主意。
loadSecurityTradeInfo可能应该更改为以计时器为参数的方法,以便使其无效。
| 归档时间: |
|
| 查看次数: |
1278 次 |
| 最近记录: |