From 08fae32f4f3f73c793e6cc6a18cfecf604870175 Mon Sep 17 00:00:00 2001 From: mengyanluo Date: Fri, 16 Oct 2020 17:41:52 +0800 Subject: [PATCH] fix(ios): fix HippyTiming crash --- ios/sdk/module/timing/HippyTiming.mm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ios/sdk/module/timing/HippyTiming.mm b/ios/sdk/module/timing/HippyTiming.mm index 576a33c0e..0f5dc4b0d 100644 --- a/ios/sdk/module/timing/HippyTiming.mm +++ b/ios/sdk/module/timing/HippyTiming.mm @@ -150,7 +150,7 @@ HIPPY_EXPORT_MODULE() - (dispatch_queue_t)methodQueue { - return HippyJSThread; + return dispatch_get_main_queue(); } - (void)invalidate @@ -192,16 +192,18 @@ HIPPY_EXPORT_MODULE() { NSDate *nextScheduledTarget = [NSDate distantFuture]; NSMutableArray *timersToCall = [NSMutableArray new]; + NSMutableArray *timersToRemove = [NSMutableArray new]; for (_HippyTimer *timer in _timers.allValues) { - if ([timer updateFoundNeedsJSUpdate]) { + if ([timer updateFoundNeedsJSUpdate] && timer.callbackID) { [timersToCall addObject:timer.callbackID]; } - if (!timer.target) { - [_timers removeObjectForKey:timer.callbackID]; + if (!timer.target && timer.callbackID) { + [timersToRemove addObject:timer.callbackID]; } else { nextScheduledTarget = [nextScheduledTarget earlierDate:timer.target]; } } + [_timers removeObjectsForKeys:timersToRemove]; // Call timers that need to be called if (timersToCall.count > 0) {