ios - today widget NSTimer memory read error?
PHP中文网
PHP中文网 2017-04-18 09:23:04
0
1
673

在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中文网

认证高级PHP讲师

全員に返信(1)
小葫芦

推測してみましょう:
1. エラー: 0x0 のメモリ読み取りに失敗しました。 0x0 は解放されたオブジェクトです。一般的に、オブジェクトは解放されてから呼び出されるので、エラーが発生します。
2. リーリー

Deinit は dealloc と同等です。タイマーは、それ自身の循環参照が解放される前に最初に削除され、その後 deinit が呼び出されます。ここで何か問題があるような気がします。適切なタイミングでタイマーを一時停止し、タイマーを nil に設定して、これが機能するかどうかを確認します

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート