This may seem like a really stupid question, but what is the cost of including (actually, calling #import
) a header file in Objective-C? I get tired of constantly including the same headers in various locations, so I decided to simply create a GlobalReferences.h
file that includes several commonly-referenced headers.
Is there any appreciable cost for including references to other files if they aren't even used? My gut tells me "no" as it seems like the linker is just made aware of other files when using #import
, but I wasn't sure if special considerations need to be taken for iPhone development, which is what my project concerns. Any thoughts?
The linker knows nothing about #import
ed files. In fact, the Objective-C compiler knows nothing about them either, they are preprocessed out by the preprocessor. The preprocessor effectively inserts the contents of the headers into the point you've included them in your source file. The actual Objective-C compiler will then have to process extra function prototypes and class interface definitions even though they aren't being used. Though this is not usually a lengthy task, it can increase compile times. The resulting size and performance of your application should remain unaffected.
To see what the raw source code looks like (including all header files and expanded macros etc):
gcc -E your-source-file.m
Importing/including more header files than you need will increase compile times. You can alleviate some of this pain with pre-compiled headers.
The biggest drawback will be in compilation times. If all of your headers are imported in every source file, then the entire project will have to be rebuilt every time you make a change to a header file.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With