It's a pretty bad idea. It will utterly slow down your compilation process. If you have several headers you need access to in every file or most of them, check out precompiled header files (the .pch in xCode). That is the proper way to do it.
Expanding answer: When making a class, you want to include as little headers as possible in .h file. It's better to have them in .m because they don't affect compilation time for other classes that include your header. You ONLY need complete definition of a type in a .h when you need to know it's size in advance. But you ALWAYS know the size of a pointer, so forward declaration is enough:
MyObject.h
#import "MyStruct.h"
@class Foo; //Forward declaration of Foo.
@class MyObject
{
Foo *foo; //No problem, you know the size. You can import Foo.h in MyObject.m
MyStruct struct; //Oops, this is not a pointer. You need to import it's definition right here.
}
@end
MyObject.m
#import "MyObject.h"
#import "Foo.h"
...
- (void)doStuffWithFoo
{
[foo doStuff]; //If you don't import Foo.h, this will throw a compiler error.
}