Rumah  >  Soal Jawab  >  teks badan

ios - today widget NSTimer memory read error?

在today widget里使用NSTimer,发生错误警报:error: memory read failed for 0x0

class TodayViewController: UIViewController, NCWidgetProviding {
    var timer: NSTimer!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view from its nib.
        print("widget")
        
        self.preferredContentSize = CGSizeMake(0,100);

        timer = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: Selector(getBattery()), userInfo: nil, repeats: true)
    }
    
    func getBattery() {
        print("level")
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)) {
        // Perform any setup necessary in order to update the view.

        // If an error is encountered, use NCUpdateResult.Failed
        // If there's no update required, use NCUpdateResult.NoData
        // If there's an update, use NCUpdateResult.NewData
        
        completionHandler(NCUpdateResult.NewData)
    }
    
    deinit {
        timer.invalidate()
    }
}
PHP中文网PHP中文网2741 hari yang lalu625

membalas semua(1)saya akan balas

  • 高洛峰

    高洛峰2017-04-18 09:25:04

    Mari kita meneka:
    1 ralat: bacaan memori gagal untuk 0x0. 0x0 ialah objek yang dilepaskan. Idea umum ialah objek dilepaskan dan kemudian dipanggil, jadi ralat berlaku
    2

        timer.invalidate()
    }

    Deinit adalah bersamaan dengan dealloc Pemasa harus dialih keluar terlebih dahulu sebelum rujukan bulatnya sendiri dikeluarkan, dan kemudian deinit dipanggil. Saya rasa seperti ada sesuatu yang tidak kena di sini. Pada masa yang sesuai, jeda pemasa, dan kemudian tetapkan pemasa kepada sifar. Lihat jika ini berfungsi

    balas
    0
  • Batalbalas