Sebastian Keller
09/13/2019, 2:12 PMIncorrectDereferenceExceptionaltimeter?.stopRelativeAltitudeUpdates()trycatchupdate()altimeter = CMAltimeter()
            altimeter?.startRelativeAltitudeUpdatesToQueue(NSOperationQueue.mainQueue) { data: CMAltitudeData?, error: NSError? ->
                update(data.pressure.doubleValue)
            }Kris Wong
09/13/2019, 3:01 PMkpgalligan
09/13/2019, 3:53 PMSebastian Keller
09/13/2019, 4:15 PMupdate(data.pressure.doubleValue)Sebastian Keller
09/13/2019, 4:16 PMkpgalligan
09/13/2019, 4:17 PMkpgalligan
09/13/2019, 4:42 PMkpgalligan
09/13/2019, 4:42 PM@ThreadLocal
object Altimeter{
    val altimeter = CMAltimeter()
    fun startUpdates() {
        if(!isMainThread)
            throw java.lang.IllegalStateException("Nah")
        
        val callback = StableRef.create({ data: CMAltitudeData ->
            update(data.pressure.doubleValue)
        })
        altimeter?.startRelativeAltitudeUpdatesToQueue(NSOperationQueue.mainQueue) { data: CMAltitudeData?, error: NSError? ->
            if(data != null && isMainThread){
                callback.get().invoke(data)
            }
        }.freeze()
    }
    fun update(){
        //???
    }
}kpgalligan
09/13/2019, 4:43 PMolonho
09/13/2019, 4:50 PMKris Wong
09/13/2019, 5:11 PMkpgalligan
09/13/2019, 5:14 PMupdatekpgalligan
09/13/2019, 5:17 PMfun startUpdates() {
        val callback = StableRef.create({ data: CMAltitudeData ->
            update(data.pressure.doubleValue)
        })
        altimeter?.startRelativeAltitudeUpdatesToQueue() { data: CMAltitudeData?, error: NSError? ->
            inMainThread{
                callback.get().invoke(data!!)
            }
        }.freeze()
    }kpgalligan
09/13/2019, 5:18 PMSebastian Keller
09/13/2019, 5:21 PMSebastian Keller
09/13/2019, 5:22 PM