title: Objective c - import .m and .h file - what does it do
body: <p>In objective c, what actually happened when you say #import "MyClass.h"? (Is the compiler copying something for you?)</p>
  
  <ol>
  <li><p>In MyClass.m file, if I <code>#import "UsefulClass.h"</code>, this means that <code>UsefulClass</code> becomes available under this file and I can create object and send message to an instance of it. </p></li>
  <li><p>In myClass.m file, I have to <code>#import "MyClass.h"</code>, this sounds like linking my implementation file to its header (called base file?), which feels quite different from what the first one does. 
  So does <code>#import</code> do two different kind of things based on circumstances? Or does it actually fall into one category from another perspective.</p></li>
  <li><p>The method defined in .m file but not in .h file is considered private. From another class, can I invoke the private method somehow? (like if I #import .m instead of .h? so the class will know about what the implementation file defines.)</p></li>
  <li><p>What is the difference between objective-c <code>#import</code> and c <code>#include</code> ?</p></li>
  <li><p>Also <code>@interface MyClass : NSObject</code>  is used in .h file and <code>@interface MyClass()</code> is used in the .m file. So is it just a syntax format(like the bracket) when you want to have private properties? or is there any logic behind this?</p></li>
  </ol>