title: Why do we have to do [MyClass class] in Objective-C?
body: <p>In Objective-C, you can invoke class methods with:</p>
  
  <pre><code>[MyClass aClassMethod];
  </code></pre>
  
  <p>And you can query an instance's kind with:</p>
  
  <pre><code>[someInstance isKindOfClass:[MyClass class]];
  </code></pre>
  
  <p>But, why do we need to do <code>[MyClass class]</code>, and not simply provide <code>MyClass</code> like this:</p>
  
  <pre><code>[someInstance isKindOfClass:MyClass];
  </code></pre>
  
  <p>Is there a reason that the compiler is fine with encountering <code>MyClass</code> as a receiver (a pointer type) but not as an argument? Is it a limitation of parsing the language? Or perhaps a limitation of the compiler?</p>