From 7436a0e7cb922b513df35cd9b124fd8c16a5804a Mon Sep 17 00:00:00 2001 From: henter Date: Mon, 11 May 2015 10:27:42 +0800 Subject: [PATCH] invalidate timer after success or error callback --- Libraries/Geolocation/RCTLocationObserver.m | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Libraries/Geolocation/RCTLocationObserver.m b/Libraries/Geolocation/RCTLocationObserver.m index f21233dbfa0576..0fe5fed756808b 100644 --- a/Libraries/Geolocation/RCTLocationObserver.m +++ b/Libraries/Geolocation/RCTLocationObserver.m @@ -85,7 +85,9 @@ @implementation RCTLocationRequest - (void)dealloc { - [_timeoutTimer invalidate]; + if (_timeoutTimer.valid) { + [_timeoutTimer invalidate]; + } } @end @@ -273,6 +275,7 @@ - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray // Fire all queued callbacks for (RCTLocationRequest *request in _pendingRequests) { request.successBlock(@[_lastLocationEvent]); + [request.timeoutTimer invalidate]; } [_pendingRequests removeAllObjects]; @@ -311,6 +314,7 @@ - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError * // Fire all queued error callbacks for (RCTLocationRequest *request in _pendingRequests) { request.errorBlock(@[jsError]); + [request.timeoutTimer invalidate]; } [_pendingRequests removeAllObjects];