title: NSDictionary literals causing crash when used with setTitleTextAttributes
body: <p>I am converting my xcode project to modern objective c. In my AppDelegate, previously, I have this code:</p>
  
  <pre><code>- (void)customizeAppearance
  {
      [[UIBarButtonItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:barButtonFont, UITextAttributeFont, nil] forState:UIControlStateNormal];
  }
  </code></pre>
  
  <p>Following, the literal way to create NSDictionary with @{keys : value}, I changed it to:</p>
  
  <pre><code>[[UIBarButtonItem appearance] setTitleTextAttributes:@{UITextAttributeFont: barButtonFont} forState:UIControlStateNormal];
  </code></pre>
  
  <p>This one change crashes my system. The error output is:</p>
  
  <blockquote>
    <p><strong>* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*</strong> -[__NSPlaceholderDictionary
    initWithObjects:forKeys:count:]: attempt to insert nil object from
    objects[0]'</p>
  </blockquote>
  
  <p>Does anyone know why and what I can do to fix it? </p>
  
  <p>I can ignore it but then it would bite me later on as I will forget. I do want to change my entire project to modern objective c and won't have to remember in the future why one code is not 'modern'.</p>
  
  <p>Thanks.</p>