Xcode Project

An Xcode project file  .xcodeproj, is a subdirectory (folder). The Finder treats it as a single file, but in Terminal, it is a normal directory. It contains:
  • project.xcworkspace: (folder) stores things related to user workspaces within the project
    • contents.xcworkspacedata: (XML) lists the top-level-entity projects that are part of this project.
    • xcuserdata: (folder) contains data of specific users
      • username.xcuserdatad: (folder) stores data related to a particular user’s workspace status.
        • UserInterfaceState.xcuserstate: Property List/Binary stores state of the user’s workspace (files open, cursor position, etc.)
  • xcuserdata: directory with user-specific info.
    • xcuserdata: subdirectory containing data of specific users.
      • xcschemes:
        • MyProject.xcscheme:  XML file.
        • xcschememanagement.plist: Property List/XML file.

Xcode Workspace (Same as xcodeproj, it is a folder, not a file.)

Created by (XCode) selecting File → Save As Workspace… with an open project. It saves workspace settings including the View (Navigator, Debug, and Utilities panes) and Editor states. When we open XCWORKSPACE file, it opens the associated project and restores the perspective. Usually used as a wrapper or container for an Xcode .XCODEPROJ project.

Other File Types

  1. plist (Property List) – it can be in XML-format or in Old-style Ascii format.
  2. pch (Pre-Compiled Header): this file is designed to help compiling be faster. However it’s not a recommended way to code a proper project. Some issues with using it can be found here (basically the dependencies/ import are not clear any more and may be impossible to tract)
  3. xib (XML Interface Builder)