[英]Deinit is not called when assign NSTimer
這就是我在UIViewController
子類中聲明屬性的方式:
private weak var timer: NSTimer?
這是我在viewDidLoad()
所做的:
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "updateTimer", userInfo: nil, repeats: true)
這是我的deinit
:
deinit {
timer?.invalidate()
timer = nil
}
由於NSTimer
未調用Deinit。 告訴我NSTimer
里面有一個強烈引用我的控制器的說法,不要NSTimer
搞笑了:)我該如何解決呢?
我認為@i_am_jorf給了您很好的指導。 如果您查看無效方法的文檔 ,您將找到為什么它如此操作的完整說明。
此方法是從NSRunLoop對象刪除計時器的唯一方法。 NSRunLoop對象會在invalidate方法返回之前或稍后刪除其對計時器的強引用。
如果配置了目標和用戶信息對象,則接收方也將刪除對這些對象的強引用。
所以是的,如果在適當的時候沒有調用無效,保留創建的循環
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.