I\'m building a Cocoa Touch Static Library. How should I decide whether to copy a header file as public, private, or project?
Randy's answer is good and gives you all the relevant background. I wanted to add some info to help you based on how you expect your library will be used.
PROJECT: If you are distributing your project, and expect users to include your project as a sub-project in their own, you should ensure your headers are marked as 'project'. Not doing so will lead to issues like this: Xcode 4 Archive Version Unspecified
Note that this applies to every sub-project...including sub-projects of sub-projects, recursively.
PUBLIC: If you expect users of your library to only link against your object (and NOT have your original project), make sure your headers are marked as 'public' (only for headers they'll need to refer to).