簡體   English   中英

分配NSTimer時不調用Deinit

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM