@@ -208,32 +208,54 @@ - (void)appWillTerminate:(GDTApplication *)application {
208
208
#pragma mark - GDTUploadPackageProtocol
209
209
210
210
- (void )packageDelivered : (GDTUploadPackage *)package successful : (BOOL )successful {
211
- dispatch_async (_coordinationQueue, ^{
211
+ dispatch_queue_t coordinationQueue = _coordinationQueue;
212
+ if (!_coordinationQueue) {
213
+ return ;
214
+ }
215
+ dispatch_async (coordinationQueue, ^{
212
216
NSNumber *targetNumber = @(package.target );
213
- [ self ->_targetToInFlightPackages removeObjectForKey: targetNumber];
214
- id <GDTPrioritizer> prioritizer = self->_registrar . targetToPrioritizer [targetNumber] ;
215
- if (!prioritizer) {
216
- GDTLogError (GDTMCEPrioritizerError, @" A prioritizer should be registered for this target: %@ " ,
217
- targetNumber) ;
217
+ NSMutableDictionary < NSNumber *, GDTUploadPackage *> *targetToInFlightPackages =
218
+ self->_targetToInFlightPackages ;
219
+ GDTRegistrar *registrar = self-> _registrar ;
220
+ if (targetToInFlightPackages) {
221
+ [targetToInFlightPackages removeObjectForKey: targetNumber] ;
218
222
}
219
- if ([prioritizer respondsToSelector: @selector (packageDelivered:successful: )]) {
220
- [prioritizer packageDelivered: package successful: successful];
223
+ if (registrar) {
224
+ id <GDTPrioritizer> prioritizer = registrar.targetToPrioritizer [targetNumber];
225
+ if (!prioritizer) {
226
+ GDTLogError (GDTMCEPrioritizerError,
227
+ @" A prioritizer should be registered for this target: %@ " , targetNumber);
228
+ }
229
+ if ([prioritizer respondsToSelector: @selector (packageDelivered:successful: )]) {
230
+ [prioritizer packageDelivered: package successful: successful];
231
+ }
221
232
}
222
233
[self .storage removeEvents: package.events];
223
234
});
224
235
}
225
236
226
237
- (void )packageExpired : (GDTUploadPackage *)package {
227
- dispatch_async (_coordinationQueue, ^{
238
+ dispatch_queue_t coordinationQueue = _coordinationQueue;
239
+ if (!_coordinationQueue) {
240
+ return ;
241
+ }
242
+ dispatch_async (coordinationQueue, ^{
228
243
NSNumber *targetNumber = @(package.target );
229
- [ self ->_targetToInFlightPackages removeObjectForKey: targetNumber];
230
- id <GDTPrioritizer> prioritizer = self->_registrar . targetToPrioritizer [targetNumber] ;
231
- id <GDTUploader> uploader = self->_registrar . targetToUploader [targetNumber] ;
232
- if ([prioritizer respondsToSelector: @selector ( packageExpired: )] ) {
233
- [prioritizer packageExpired: package ];
244
+ NSMutableDictionary < NSNumber *, GDTUploadPackage *> *targetToInFlightPackages =
245
+ self->_targetToInFlightPackages ;
246
+ GDTRegistrar *registrar = self->_registrar ;
247
+ if (targetToInFlightPackages ) {
248
+ [targetToInFlightPackages removeObjectForKey: targetNumber ];
234
249
}
235
- if ([uploader respondsToSelector: @selector (packageExpired: )]) {
236
- [uploader packageExpired: package];
250
+ if (registrar) {
251
+ id <GDTPrioritizer> prioritizer = registrar.targetToPrioritizer [targetNumber];
252
+ id <GDTUploader> uploader = registrar.targetToUploader [targetNumber];
253
+ if ([prioritizer respondsToSelector: @selector (packageExpired: )]) {
254
+ [prioritizer packageExpired: package];
255
+ }
256
+ if ([uploader respondsToSelector: @selector (packageExpired: )]) {
257
+ [uploader packageExpired: package];
258
+ }
237
259
}
238
260
});
239
261
}
0 commit comments