In Objective-c when we using object of one class into another class by convention we should forward declare the class in .h file, i.e. @class classname;. And sh
#import is a pre-processor directive that operates on the file before the compiler sees it. Whenever you get confused, conceptually think of it as like a copy-and-paste: when you see #import foo, the means the contents of file foo are inserted at that point. (It's a bit more clever than that, as it also guards against duplicate includes).
So you #import Foo.h in Bar.h if there are declarations in Bar.h that reference Foo.h. If there is nothing in Bar.h that uses Foo, but there is Bar.m, then the import goes in Bar.m. Keep the declarations only where they're need.