title: JSQMessagesViewController EXC_BAD_ACCESS adding location
body: <p>I am using the <code>JSQMessagesViewController</code> to create a chat app. When adding locations, this crashes occasionally with <code>EXC_BAD_ACCESS</code> on the following line. </p>
  
  <pre><code>MKAnnotationView *pin = [[MKPinAnnotationView alloc] initWithAnnotation: annotation reuseIdentifier:nil];
  </code></pre>
  
  <p>in the following function: </p>
  
  <pre><code>- (void)createMapViewSnapshotForLocation:(CLLocation *)location
                      coordinateRegion:(MKCoordinateRegion)region
                 withCompletionHandler:(JSQLocationMediaItemCompletionBlock)completion
  {
  NSParameterAssert(location != nil);
  
  MKMapSnapshotOptions *options = [[MKMapSnapshotOptions alloc] init];
  options.region = region;
  options.size = [self mediaViewDisplaySize];
  options.scale = [UIScreen mainScreen].scale;
  
  MKMapSnapshotter *snapShotter = [[MKMapSnapshotter alloc] initWithOptions:options];
  
  [snapShotter startWithQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
            completionHandler:^(MKMapSnapshot *snapshot, NSError *error) {
                if (snapshot == nil) {
                    NSLog(@"%s Error creating map snapshot: %@", __PRETTY_FUNCTION__, error);
                    return;
                }
                MKPointAnnotation* annotation= [MKPointAnnotation new];
                annotation.coordinate = [[[CLLocation alloc]initWithLatitude: 23.4 longitude: 53.2] coordinate];
  
                MKAnnotationView *pin = [[MKPinAnnotationView alloc] initWithAnnotation: annotation reuseIdentifier:nil];
                CGPoint coordinatePoint = [snapshot pointForCoordinate:location.coordinate];
                UIImage *image = snapshot.image;
  
                coordinatePoint.x += pin.centerOffset.x - (CGRectGetWidth(pin.bounds) / 2.0);
                coordinatePoint.y += pin.centerOffset.y - (CGRectGetHeight(pin.bounds) / 2.0);
  
                UIGraphicsBeginImageContextWithOptions(image.size, YES, image.scale);
                {
                    [image drawAtPoint:CGPointZero];
                    [pin.image drawAtPoint:coordinatePoint];
                    self.cachedMapSnapshotImage = UIGraphicsGetImageFromCurrentImageContext();
                }
                UIGraphicsEndImageContext();
  
                if (completion) {
                    dispatch_async(dispatch_get_main_queue(), completion);
                }
              }];
        }
  </code></pre>
  
  <p>This is the stack trace : </p>
  
  <pre><code>enter code here* thread #18: tid = 0x178725, 0x000000018b443aa8 UIKit`-[_UIViewAdditiveAnimationAction runActionForKey:object:arguments:] + 2720, queue = 'com.apple.root.default-qos', stop reason = EXC_BAD_ACCESS (code=1, address=0x90)
  frame #0: 0x000000018b443aa8 UIKit`-[_UIViewAdditiveAnimationAction runActionForKey:object:arguments:] + 2720
  frame #1: 0x0000000188604f34 QuartzCore`CA::Layer::set_bounds(CA::Rect const&amp;, bool) + 404
  frame #2: 0x00000001886050b4 QuartzCore`-[CALayer setBounds:] + 100
  frame #3: 0x00000001915683b8 MapKit`-[MKLayer setBounds:] + 48
  frame #4: 0x000000018b1aed18 UIKit`-[UIView(Geometry) setBounds:] + 400
  frame #5: 0x0000000191568820 MapKit`-[MKAnnotationView setImage:] + 156
  frame #6: 0x00000001915682f4 MapKit`-[MKPinAnnotationView initWithAnnotation:reuseIdentifier:] + 484
   * frame #7: 0x0000000100b6df40 JSQMessagesViewController`__96-[JSQLocationMediaItem createMapViewSnapshotForLocation:coordinateRegion:withCompletionHandler:]_block_invoke((null)=&lt;unavailable&gt;, snapshot=0x0000000170a2c760, error=0x0000000000000000) + 340 at JSQLocationMediaItem.m:111
  frame #8: 0x00000001916fdb2c MapKit`__41-[MKMapSnapshotter _succeedWithSnapshot:]_block_invoke_2 + 84
  frame #9: 0x000000010154d258 libdispatch.dylib`_dispatch_call_block_and_release + 24
  frame #10: 0x000000010154d218 libdispatch.dylib`_dispatch_client_callout + 16
  frame #11: 0x000000010155b26c libdispatch.dylib`_dispatch_queue_override_invoke + 980
  frame #12: 0x000000010155ce2c libdispatch.dylib`_dispatch_root_queue_drain + 584
  frame #13: 0x000000010155cb78 libdispatch.dylib`_dispatch_worker_thread3 + 140
  frame #14: 0x000000018433f2a0 libsystem_pthread.dylib`_pthread_wqthread + 1288
  frame #15: 0x000000018433ed8c libsystem_pthread.dylib`start_wqthread + 4
  </code></pre>