title: Why does an NSObject have to be initialized before its' .class-property is readable
body: <p>If I say for example:</p>
  
  <pre><code>UIImageView *imageView;
  imageView = [[UIImageView alloc] init];
  NSLog(@"%@", imageView.class);
  </code></pre>
  
  <p>It will log <code>UIImageView</code> as expected. </p>
  
  <hr>
  
  <p>Now, if I instead write the code in a way where the UIImageView's <code>.class</code> property is used in allocating the object (which is declared/defined as a UIImageView on line 0), it will log <code>(null)</code></p>
  
  <pre><code>UIImageView *myImageView;
  myImageView = [[myImageView.class alloc] init];
  NSLog(@"%@", myImageView.class);//logs (null)
  </code></pre>
  
  <hr>
  
  <p>Even if I hard cast the object to a UIImageView whilst reading its' <code>.class</code> value, when I then go to log said class value later on, I still get <code>(null)</code></p>
  
  <pre><code>UIImageView *myImageView;
  myImageView = [[((UIImageView *)myImageView).class alloc] init];
  NSLog(@"%@", myImageView.class);//logs (null)
  </code></pre>