title: @class vs. #import
body: <p>It is to my understanding that one should use a forward-class declaration in the event ClassA needs to include a ClassB header, and ClassB needs to include a ClassA header to avoid any circular inclusions. I also understand that an <code>#import</code> is a simple <code>ifndef</code> so that an include only happens once.</p>
  
  <p>My inquiry is this: When does one use <code>#import</code> and when does one use <code>@class</code>? Sometimes if I use a <code>@class</code> declaration, I see a common compiler warning such as the following:</p>
  
  <blockquote>
    <p><code>warning: receiver 'FooController' is a forward class and corresponding @interface may not exist.</code></p>
  </blockquote>
  
  <p>Would really love to understand this, versus just removing the <code>@class</code> forward-declaration and throwing an <code>#import</code> in to silence the warnings the compiler is giving me.</p>