title: Removing elements in an array while enumerating the array
body: <p>For example:</p>
  
  <pre><code>NSMutableArray *array = [NSMutableArray arrayWithObjects:@"A", @"B", @"C", nil];
  [array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
      if ([obj isEqualToString:@"A"]) {
          [array removeObject:obj];
      }
  }];
  NSLog(@"%@", array);
  </code></pre>
  
  <p>The console print <code>B,C</code>.</p>
  
  <p>However:</p>
  
  <pre><code>NSMutableArray *array = [NSMutableArray arrayWithObjects:@"A", @"B", @"C", nil];
  [array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
      if ([obj isEqualToString:@"A"]) {
          [array removeObject:obj];
      } else if ([obj isEqualToString:@"B"]) {
          [array removeObject:obj];
      }
  }];
  NSLog(@"%@", array);
  </code></pre>
  
  <p>The console print <code>B,C</code>.</p>
  
  <p><strong>Why 'B,C' not 'C'?</strong></p>
  
  <p>What happend when deleting obj in an array while enumerating?</p>