<p>I've been teaching myself Objective-C over the past month or so (I'm a Java head) and I've got my brain wrapped around most of it now. One thing that's confusing me at the moment: What's the difference between importing a class via @class vs doing a #import? </p>

<p>Is one better than another one, or do I need to use one instead of the other in certain cases? I've been using just #import so far.</p>

```
#import
```
brings the entire header file in question into the current file; any files that THAT file
```
#import
```
s are also included. @class, on the other hand (when used on a line by itself with some class names), just tells the compiler "Hey, you're going to see a new token soon; it's a class, so treat it that way).
This is very useful when you've got the potential for 'circular includes'; ie, Object1.h makes reference to Object2, and Object2.h makes reference to Object1. If you
```
#import
```
both files into the other, the compiler can get confused as it tries to
```
#import
```
Object1.h, looks in it and sees Object2.h; it tries to
```
#import
```
Object2.h, and sees Object1.h, etc.
If, on the other hand, each of those files has
```
@class Object1;
```
or
```
@class Object2;
```
, then there's no circular reference. Just be sure to actually
```
#import
```
the required headers into your implementation (.m) files.