This document contains the release notes for the latest Xcode releases.
There are a number of mailing lists that are great for Mac OS X and Xcode developers. For more information please go to http://lists.apple.com. There are lists on the following topics and many more:
xcode-users: This list is great for asking (and answering) questions about Xcode.
java-dev: A place for Mac Java developers to hang out.
cocoa-dev: Keep in touch with the Cocoa community.
carbon-dev: Keep in touch with the Carbon community.
fortran-dev: For Fortran development issues.
unix-porting: For developers porting standard Unix software packages.
webobjects-dev: For WebObjects development issues.
Note that these mailing lists are not appropriate for products released under seed or non-disclosure agreements. Please see the seed instructions you received with your OS or Developer Tools seed for proper feedback and support channels.
All members of the Apple Developer Connection can use the online bug reporting tool (bugreporter) to communicate issues with Apple. Please include detailed information of the issue, including the system and developer tools version information, and any relevant crash logs or console messages.
To send feedback to Apple, please use:
xcode-feedback@group.apple.com: Comments or feedback on the Xcode Tools suite.
cocoa-feedback@group.apple.com: Comments or feedback on AppKit and Cocoa.
Xcode 3.1.2 Release Notes
Xcode 3.1.1 Release Notes
Xcode 3.1 Release Notes
Xcode 3.0 Release Notes
Xcode 3.1.2 is an update to the Xcode development environment. It works only on Mac OS X 10.5 “Leopard” and can be installed either alongside or replacing Xcode 3.1.1 or earlier. Please see the Xcode 3.1 Release Notes and Xcode 3.1 Release Notes for details about previous versions of Xcode.
Like Xcode 3.1.1, Xcode 3.1.2 has no significant new features over Xcode 3.1. It restructures the relationship between Xcode and the iPhone SDK plugin, and fixes a small number of bugs. Three additional build settings are supported, but are not available in the Build Settings pane unless you add them. See “Summary of New Features”.
Supported configurations
Xcode 3.1.2 will run on Mac OS X 10.5 (Leopard) on a Macintosh with either a PowerPC or an Intel processor. It will not install or run on earlier versions of Mac OS X. Xcode supports development for Mac OS X 10.3 (Panther) and Universal development for Mac OS X 10.4 (Tiger) and Mac OS X 10.5 (Leopard) using the Mac OS X SDK support. It also supports cross-development for the iPhone, iPod Touch, and iPhone Simulator using the iPhoneOS SDKs, but only on Macintosh computers with an Intel processor.
Warning: Xcode 3.1 2 works only with the iPhone SDK packages delivered with the iPhone 2.2 SDK. If you have installed previous versions of the iPhone SDK, you must upgrade to the newer version of the iPhone SDK when upgrading to Xcode 3.1.2. This will still allow you to develop for iPhone 2.0 and 2.1 as well as 2.2.
Xcode Installation
The default location for Xcode Developer Tools is /Developer. However, you may install Xcode 3.1.2 on any volume in any location, and you can move or rename the entire Developer directory after installation. The only restriction is that the directory names of its subdirectories must not be changed, nor moved within the developer directory; but the Developer directory itself may be renamed and placed in any other directory or volume, including servers and external drives.
This allows you to have multiple versions of Xcode tools installed on the same system but running independently. The Xcode IDE will use the SDKs, build tools, and auxiliary applications from the Developer directory it is launched from whenever possible, rather than those from the root system.
Project File Format Compatibility and Versioning
Xcode 3.1.2 reads and builds the targets of project files created in Xcode 2.1 through 3.1.1, and will automatically upgrade project files created in Xcode 1.5 through 2.0.
Project files opened and edited with Xcode 3.1.2 are generally compatible with Xcode 3.1.1, 3.1, 3.0, and 2.5; this means that project files you create or open with Xcode 3.1.2 can always be opened and built with Xcode 3.1.1, 3.1, 3.0, and 2.5. There are no incompatibilities between Xcode 3.1.2 and 3.1, though bug fixes may make projects build correctly in 3.1.2 that will not build correctly in earlier versions.
If you use a particular feature that would cause your project to fail to build on a prior version of Xcode, you’ll see a Compatibility Notice in the lower right corner of your project window; see Project ▶ Get Info ▶ General ▶ Compatibility to investigate and resolve the compatibility issue.
Three new build settings allow you to control the output file of strings and plist files processed by Xcode. Note that these settings must be added as a User-Defined Setting and do not normally appear in the Build Settings pane.
INFOPLIST_OUTPUT_FORMAT
PLIST_FILE_OUTPUT_FORMAT
STRINGS_FILE_OUTPUT_ENCODING
The default value for these settings is “XML
”. Setting the value of one of these build settings to “binary
” causes all indicated files (Info.plist, other plists file, or .strings file) in the target to be copied into the product bundle in binary format.
In Xcode 3.0, External Targets lost the ability to output the environment variables that are passed to them. This has been restored in Xcode 3.1.2. 6169099
Downloading and installing documentation sets no longer consumes excessive amounts of CPU. 5891184
Edit All in Scope no longer crashes when typing certain composed Unicode characters. 6217303
Here are some commonly-reported issues that are known with this release of Xcode.
If the project.pbxproject file inside your project wrapper is locked, your separate user.pbxuser file will not be written, and breakpoints, custom executables, and window positions you change will not be saved. 4440006
While most known cases have been taken care of, having a space, comma, slash, backslash, tilde, or other character special to the Unix shell in the directory name of any parent folder of your project can cause your project build to fail in unexpected ways. 4101529
Having the same file in your project referred to both directly and via a symbolic link from separate places can corrupt the project index and cause Xcode to crash. Remove the project index and remove the symlink reference to the file. 4056799
On a very small number of systems and for unknown reasons, the I-beam editing cursor does not hide when you start typing. 4191120
In certain circumstances, applications like Xcode can exhaust the Window Server’s ability to create new windows, causing an NSInternalInconsistencyException Error (1000) creating CGSWindow. This will be addressed in a future version of Mac OS X. 3108154
The Touch menu item (or clicking in the “hammer” column) only works for source code files, not headers, libraries, NIB files, resources, or other project files. 4912312
If you define a Source Tree in the Preferences pane, you must quit and reopen Xcode for it to take effect. 4416517
Xcode does not interact well with Spaces; opening auxiliary Xcode windows may switch you to Xcode’s main Space. 5308807
The function popup does not distinguish between functions with the same identifier. 2566673
NSImage caches images in a manner that makes the Objective-C Garbage Collector issue a console log of the form “malloc: free_garbage: garbage ptr = 0x3846140, has non-zero refcount = 1
”. These can be ignored.
The default setting for debugging libraries and frameworks is Load Symbols Lazily. On occasion this causes breakpoints to not be hit. Turning off this setting makes it take longer to start debugging, but hits breakpoints more reliably.
Referring to an .xcconfig
file using #include
does not consult any of the target’s Search Paths; all referenced configuration files should be stored in the same directory. 5850085
Using a port number when setting up a Subversion repository in the Repositories panel generates an inaccurate svn+ssh: URL. Instead of entering the port number in the Repository setup pane, leave off the port number in Xcode and add an entry with the port number in ~/.ssh/config
for the desired host. 5801847
A bug in NSFileManager makes restoring from snapshots fail catastrophically in specific circumstances. Until this is addressed, ensure that you have a Time Machine backup or a repository version of your working code before attempting to restore from a snapshot. 5468824
If you build a project prior to importing it into SCM, then the project’s build folder may be imported into your repository, and subsequent Commit Entire Project operations will fail. Remove the build folder from the repository. 4896482
Regular expression searches are limited to single lines. 5842770
Only the version installed in /Developer
is available as a Distributed Build volunteer by other computers. 5939834
When adding frameworks or libraries using the Target Inspector, you can only see frameworks in the SDK that the inspected target is configured for. To add frameworks from a different SDK, first change the Base SDK setting of that target. 5931773
Find in File and Project Find will only find the actual key names in a Property List file, not the display names as seen in the Property List Editor. 5946354 Replace does not work in the embedded Property List editor; command-click and choose Open As ▶ Source Code File to perform Find and Replace. 5946376
Syntax-Aware Indentation does not work correctly with certain keyboard layouts, such as German. 5848499
The default Build and Go toolbar item is not useful in projects without a configured Executable, such as KEXT projects. Add a Custom Executable or replace the Build and Go item with Build. 5939297
Xcode 3.1.1 is an update to the Xcode development environment. It works only on Mac OS X 10.5 “Leopard” and can be installed either alongside or replacing Xcode 3.1. Please see the Xcode 3.1 Release Notes for details about previous versions of Xcode.
Xcode 3.1.1 has no new features over Xcode 3.1, but the newer version has some configuration changes.
Supported configurations
Xcode 3.1.1 will run on Mac OS X 10.5 (Leopard) on a Macintosh with either a PowerPC or an Intel processor. It will not install or run on earlier versions of Mac OS X. Xcode supports development for Mac OS X 10.3 (Panther) and Universal development for Mac OS X 10.4 (Tiger) and Mac OS X 10.5 (Leopard) using the Mac OS X SDK support. It also supports cross-development for the iPhone, iPod Touch, and iPhone Simulator using the iPhone OS SDKs, but only on Macintosh computers with an Intel processor.
Xcode Installation
The default location for Xcode Developer Tools is /Developer. However, you may install Xcode 3.1.1 on any volume in any location, and you can move or rename the entire Developer directory after installation. The only restriction is that the directory names of its subdirectories must not be changed, nor moved within the developer directory; but the Developer directory itself may be renamed and placed in any other directory or volume, including servers and external drives.
This allows you to have multiple versions of Xcode tools installed on the same system but running independently. The Xcode IDE will use the SDKs, build tools, and auxiliary applications from the Developer directory it is launched from whenever possible, rather than those from the root system.
Project File Format Compatibility and Versioning
Xcode 3.1.1 reads and builds the targets of project files created in Xcode 2.1 through 3.1 and will automatically upgrade project files created in Xcode 1.5 through 2.0.
Project files opened and edited with Xcode 3.1.1 are generally compatible with Xcode 3.1, 3.0, and 2.5; this means that project files you create or open with Xcode 3.1.1 can always be opened and built with Xcode 3.1, 3.0, and 2.5. There are no incompatibilities between Xcode 3.1.1 and 3.1, though bug fixes may make projects build correctly in 3.1.1 that will not build correctly in 3.0.
If you use a particular feature that would cause your project to fail to build on a prior version of Xcode, you’ll see a Compatibility Notice in the lower right corner of your project window; see Project ▶ Get Info ▶ General ▶ Compatibility to investigate and resolve the compatibility issue.
There are no new features in Xcode 3.1.1.
Build System
Projects with cross-project references would often pull the build product for a Copy Files or Link build phase from the wrong configuration of a dependent target. This has been fixed. 6024409
The Active Architecture build setting now works correctly with cross-project references, so that collections of related targets are all built with the same architecture. 5908284
The copystrings utility now specifically references its own known-compatible copy of the iconv tool, so users who have built or installed their own incompatible one now no longer get errors on building. 5994894
Building kernel extensions with different architectures for different SDKs now works correctly. 6024429
Building a XIB that contains an NSToolbar object now works more reliably. 5886192
Debugging
Long sessions with many repeated debug sessions no longer cause an Xcode hang due to leaked system resources. 5978474
Certain key presses in the Xcode console now no longer cause a crash. 6040603
The Summary column shows the summary value, rather than the formatter template, more often. 5546187
Text Editing
A relatively rare crash when pasting text on a PowerPC-based Mac has been fixed. 6077362
Some CodeSense misbehavior when using Edit All in Scope has been fixed. 6018419
Setting the indent width to zero no longer causes a crash. 5611522
Source Code Management
Xcode’s Subversion support now works with Subversion 1.5. 6053549
Here are some commonly-reported issues that are known with this release of Xcode.
If the project.pbxproject file inside your project wrapper is locked, your separate user.pbxuser file will not be written, and breakpoints, custom executables, and window positions you change will not be saved. 4440006
While most known cases have been taken care of, having a space, comma, slash, backslash, tilde, or other character special to the Unix shell in the directory name of any parent folder of your project can cause your project build to fail in unexpected ways. 4101529
Having the same file in your project referred to both directly and via a symbolic link from separate places can corrupt the project index and cause Xcode to crash. Remove the project index and remove the symlink reference to the file. 4056799
On a very small number of systems and for unknown reasons, the I-beam editing cursor does not hide when you start typing. 4191120
In certain circumstances, applications like Xcode can exhaust the Window Server’s ability to create new windows, causing an NSInternalInconsistencyException Error (1000) creating CGSWindow. This will be addressed in a future version of Mac OS X. 3108154
The Touch menu item (or clicking in the “hammer” column) only works for source code files, not headers, libraries, NIB files, resources, or other project files. 4912312
If you define a Source Tree in the Preferences pane, you must quit and reopen Xcode for it to take effect. 4416517
Xcode does not interact well with Spaces; opening auxiliary Xcode windows may switch you to Xcode’s main Space. 5308807
The function popup does not distinguish between functions with the same identifier. 2566673
NSImage caches images in a manner that makes the Objective-C Garbage Collector issue a console log of the form “malloc: free_garbage: garbage ptr = 0x3846140, has non-zero refcount = 1
”. These can be ignored.
The default setting for debugging libraries and frameworks is Load Symbols Lazily. On occasion this causes breakpoints to not be hit. Turning off this setting makes it take longer to start debugging, but hits breakpoints more reliably.
Referring to an .xcconfig
file using #include
does not consult any of the target’s Search Paths; all referenced configuration files should be stored in the same directory. 5850085
Using a port number when setting up a Subversion repository in the Repositories panel generates an inaccurate svn+ssh: URL. Instead of entering the port number in the Repository setup pane, eave off the port number in Xcode and add an entry with the port number in ~/.ssh/config
for the desired host. 5801847
A bug in NSFileManager makes restoring from snapshots fail catastrophically in specific circumstances. Until this is addressed, ensure that you have a Time Machine backup or a repository version of your working code before attempting to restore from a snapshot. 5468824
If you build a project prior to importing it into SCM, then the project’s build folder may be imported into your repository, and subsequent Commit Entire Project operations will fail. Remove the build folder from the repository. 4896482
Regular expression searches are limited to single lines. 5842770
Only the version installed in /Developer
is available as a Distributed Build volunteer by other computers. 5939834
When adding frameworks or libraries using the Target Inspector, you can only see frameworks in the SDK that the inspected target is configured for. To add frameworks from a different SDK, first change the Base SDK setting of that target. 5931773
Find in File and Project Find will only find the actual key names in a Property List file, not the display names as seen in the Property List Editor. 5946354 Replace does not work in the embedded Property List editor; command-click and choose Open As ▶ Source Code File to perform Find and Replace. 5946376
Syntax-Aware Indentation does not work correctly with certain keyboard layouts, such as German. 5848499
The default Build and Go toolbar item is not useful in projects without a configured Executable, such as KEXT projects. Add a Custom Executable or replace the Build and Go item with Build. 5939297
Xcode 3.1 is a revision of the Xcode development environment. It is available both as a standalone version of Developer Tools for Mac OS X 10.5 (“Leopard”) as well as part of the iPhone SDK.
The About iPhone SDK document discusses Xcode and its role in development for Mac OS X and iPhone.
Supported configurations
Xcode 3.1 will run on Mac OS X 10.5 (Leopard) on a Macintosh with either a PowerPC or an Intel processor. It will not install or run on earlier versions of Mac OS X. Xcode supports development for Mac OS X 10.3 (Panther) and Universal development for Mac OS X 10.4 (Tiger) and Mac OS X 10.5 (Leopard) using the Mac OS X SDK support. It also supports cross-development for the iPhone, iPod Touch, and iPhone Simulator using the iPhoneOS SDKs, but only on Macintosh computers with an Intel processor.
Xcode Installation
The default location for Xcode Developer Tools is /Developer
. However, you may install Xcode 3.1 on any volume in any location, and you can move or rename the entire Developer directory after installation. The only restriction is that the directory names of its subdirectories must not be changed, nor moved within the developer directory; but the Developer directory itself may be renamed and placed in any other directory or volume, including servers and external drives.
This allows you to have multiple versions of Xcode tools installed on the same system but running independently. The Xcode IDE will use the SDKs, build tools, and auxiliary applications from the Developer directory it is launched from whenever possible, rather than those from the root system. To refer to those files in your own projects, use the new Relative to Xcode Folder reference style, whose root path is $(DEVELOPER_DIR)
.
The Xcode Developer Tools installer also installs the standard system development tools and interfaces into /usr
, so conventional makefile- and config-based builds will operate correctly. Use the xcode-select
tool to set the default tool set for command-line builds.
In all previous versions of Xcode and Project Builder, the first launch of Xcode for a new user would bring up a New User Assistant dialog to set the default Build directory location and some other preferences. This has been removed. If you are building projects that require a common build directory and are setting up a new user account, you must set this in the Xcode ▶ Preferences ▶ Building pane instead of the New User Assistant.
Project File Format Compatibility and Versioning
Xcode 3.1 reads and builds the targets of project files created in Xcode 2.1 through 3.0, and will automatically upgrade project files created in Xcode 1.5 through 2.0. Xcode 3.1 does not reliably read project files created in Xcode 1.2 or earlier, or Project Builder project files. Open and upgrade these project files in Xcode 2.5 before opening them with Xcode 3.1.
Note: It is strongly recommended that, when converting pre-Xcode 2.1 project files to Xcode 2.2 and later, you also upgrade all the project’s targets to Native Targets using the item in the Project menu. Many Xcode features, including support for building Universal Binaries, are not supported for non-native (“Jam-based”) targets.
Xcode 3.1 no longer imports CodeWarrior project files. Install Xcode 2.5 and CodeWarrior Pro version 8.3 and follow the documentation in Porting CodeWarrior Projects to Xcode.
Project files opened and edited with Xcode 3.1 are generally compatible with Xcode 3.0 and Xcode 2.5; this means that project files you create or open with Xcode 3.1 can always be opened and built with Xcode 3.0 and 2.5. If you use a particular feature that would cause your project to fail to build on a prior version of Xcode, you’ll see a Compatibility Notice in the lower right corner of your project window; see Project ▶ Get Info ▶ General ▶ Compatibility to investigate and resolve the compatibility issue.
New Default Factory Settings
Xcode 3.1 defines different default values for several Xcode Preferences. If you install Xcode on a machine where you have an existing user account, and you have explicitly set these preferences in the past, the new defaults will not affect you. If, however, you have always used Xcode’s default values for these preferences, or you create a new user account, you will see the effect of the different preferences. You may want to explicitly set the behavior you desire in Xcode ▶ Preferences.
General ▶ Automatically open/close attached editor is now checked by default
General ▶ Open Counterparts in Same Editor is now checked by default
CodeSense ▶ Show Arguments in Pop-up List is now unchecked by default
CodeSense ▶ Automatically Suggest is now set to Immediate
Building ▶ Continue building after errors is now checked by default
Indentation ▶ Syntax-Aware Indenting is now checked by default
Please see What's New in Xcode for a complete guide to these new features:
Support for SDKs for Other Platforms
The most significant addition to Xcode 3.1 is support for Software Development Kits (SDKs) for platforms other than Mac OS X. In addition to supporting SDKs for other versions of Mac OS X, Xcode 3.1 now supports SDKs that contain headers, libraries, plugins, and tools for developing for the iPhone and iPod Touch.
SDKs for other platforms are installed in the /Platforms directory in the Developer folder, and contain a directory tree that resembles the root directory of Mac OS, but populated with tools and plugins for the other platform. For example, the /Developer/Platforms/iPhoneOS.platform
contains compilers and linkers in iPhoneOS.platform/usr/bin
, Xcode plugins in iPhoneOS.platform/Developer/Plug-Ins
, and individual SDKs for iPhone and iPod Touch development in iPhoneOS.platform/Developer/SDKs
.
Apart from installing them, you will generally not see platform distinctions in Xcode. When you create a new project or target, you will see project types categorized by platform; when you edit and build projects, you will set the SDK that supports the frameworks and APIs that your code uses, and the SDK will determine what platform tools it needs.
New gcc-4.2 and llvm-gcc-4.2 Compilers
Xcode 3.1 includes the gcc 4.2 compiler as an alternative system C / C++ / Objective-C compiler.
In addition, the llvm-gcc-4.2 compiler is also included with Xcode 3.1. This compiler uses the LLVM backend and code generator with the gcc 4.2 parser, and supports C, C++, Objective-C, and Objective-C++. More information is available in the LLVM-GCC 4.2 Release Notes.
To use either of these new compilers in a project, you can use the new Compiler Version build setting and choose the compiler you want from the popup menu. By changing this setting in different targets and configurations and using the per-architecture and per-SDK popups, you have fine-grained control over which compiler is used in different circumstances. Note that neither gcc-4.2 nor llvm-gcc-4.2 will compile code against the 10.4u or earlier SDK, or deploy for Mac OS X 10.4 or earlier.
Note that because most C++ applications built for 10.3.9 and later use the dynamic C++ standard library from the operating system, and Leopard only ships with the gcc 4.0 version of the C++ standard library, the gcc 4.2 and llvm-gcc4.2 compilers also use the gcc 4.0 C++ standard library, not the gcc 4.2 version.
Updated New Project, New Target, New File assistants
The New Project, New Target, and New File assistants have been updated to a more modern user experience and up-to-date templates.
New projects created from the templates use several conventions different from previous versions of Xcode. You should be aware of these differences when working with the projects or sharing them with Xcode 3.0 or 2.5 users.
Projects are created with Xcode 3.1 compatibility and need to be set to a different compatibility level to be used on other versions of Xcode. Xcode 3.0 project templates were created with Xcode 2.4.1 backwards compatibility already set.
The initial Project Configuration is set to Debug. The “default configuration” for building from the command line with xcodebuild
is still Release.
The Architectures build setting is set to “Standard 32-Bit” for all configurations at the project level. The “Only Active Architectures” build setting is set for the Debug configuration. This means that in general Release builds are 2-way fat and Debug builds are one-way thin for the build machine.
Source files created without a matching header file do not have the #include
line for the nonexistent header.
The ORGANIZATIONNAME
substitution value in templates is now replaced with the Company Name from the current user’s Address Book card if present, rather than __MyCompanyName__
. If the PBXCustomTemplateMacroDefinitions
user default has already been set, it will be honored.
ALWAYS_SEARCH_USER_PATHS
is not set in any templates.
Updated Factory Settings for Preferences, Toolbars, and Window Geometry
To simplify the Xcode experience for new users, the initial Project Window (in Default layout only) is now larger and shows the Editor pane by default. The default Toolbars on all modules have been simplified and made more consistent. Defaults in the General, Building, Debugging, Text Editing, and Indentation preference panes have been changed to reflect the expectations of new users.
Users who have set their own preferences, window size, or toolbars will generally not see these changes; they will be seen only by users who have not customized the factory settings. Opening any project in Xcode 3.0 may reset your global Toolbar settings to Xcode 3.0 factory settings, removing the new Xcode 3.1 default configuration.
New Integrated Property List Editor
Selecting a Property List file in the Groups and Files or Detail view now opens the file in a tabular outline instead of text form, regardless of whether the property list is in old-style text, XML, or binary format. You can expand and collapse the arrays and dictionaries in the property list as in any outlining tool, and edit the keys and values. Option-click the disclosure arrows to Expand All or Collapse All.
To see the property list in text form, control-click and choose Open As... ▶ Source Code File or Plain Text File.
The editor will edit any property list file as a generic property list. In addition, provided Property List Definitions allow you to view and edit the property list in a structured way. Definitions are provided for Info.plist, .scriptSuite, and .scriptTerminology files in the Mac OS X platform. To apply a definition to the property list in the editor, choose View ▶ Property List Type.
To create a new entry in the property list, simply select a row and press Return. If the row is a containter (array or dictionary) and is disclosed, a child item will be created; otherwise, a peer item is created. Option-Return toggles the expansion state of the item before adding a row. The + button at the end of a row has the same effect as Return, including following the option key behavior.
If the Property List Type is None, you’ll get a generic item and have to set the key name and the value type manually (with the context menu obtained by Control- or right-click) . If the property list is of a defined type, a default key and value will be assigned automatically; pick from the popup in the Key column to change the key (and therefore the type).
You can drag and drop to reorder items in arrays (and, in fact, dictionaries, though you cannot rely on the order of keys in dictionaries). You can print property lists at their current disclosure triangle expansions state.
All of the features of the embedded Property List editor are available in the stand-alone Property List Editor application.
Comments are not supported and are deleted from the plist document when saved. This includes preprocessor #defines in files meant to be preprocessed. The Property List Editor will not open an XML property list error if the #define comments appear before the XML header block.
Updated FileMerge application
The standalone File Merge application has been updated with the inner workings of Xcode’s built-in file comparison utility. This results in faster and more accurate diffing of files, and has addressed a number of longstanding bugs and shortcomings. Specifically, the new File Merge can handle files of differing line endings properly, as well as ignoring leading white space on lines.
Updated Open Quickly panel
The Open Quickly panel has been updated in both function and appearance. The previous Open Quickly search paths in the Xcode Preferences are ignored and have been removed; Open Quickly searches known locations in the project, including the index, the SDKs in use, and the Header and Framework Search Paths, to find symbols and files.
Open Quickly now does autocompletion for known terms, and shows multiple results in a list for selection with the arrow keys. The magnifying glass icon in the search bubble holds recent searches for reference.
The behavior of the Jump to Definition function now mirrors the Open Quickly feature, essentially jumping directly to the first result that the Open Quickly panel would have shown.
Previous implementations of Open Quickly would jump directly to a file if the insertion point were set in its file name. This was confusing to people who wanted the Open Quickly panel but had the insertion point inadvertently set in a valid file name. The behavior is still available with Option-Open Quickly. You can also change your Key Bindings to associate Command-Shift-D with the Open This Quickly action, which makes the old behavior the default. In addition, you can set defaults write com.apple.Xcode XCOQSkipPanelBehavior
to any of these values:
0 | Default behavior |
1 | Always show the Open Quickly panel |
2 | Skip the panel if the insertion point is in a valid file name in an |
3 | Always skip the panel if a good match is found |
New Add Frameworks Pane and Sheet and Relative to SDK Reference Style
The process of adding a framework, dynamic library, or static archive to a target has been simplified. In the Target’s Get Info window in the General tab, there is a new Frameworks and Libraries pane that lists all the frameworks and libraries that target links with. A button opens a sheet listing all the frameworks, dynamic libraries, and static archives available in the target’s SDK, as a flat list. You can select any of these, or use the Choose... button to pick an item using the standard Open... dialog. The Add Existing Frameworks contextual menu item in the Groups and Files tree also invokes this sheet.
Items added to the target are automatically referred to using a new reference form, Relative to Current SDK. Only the framework’s name will be stored in your project, and its full path will be constructed according to the SDK in use when the target is built. This makes it easier to use frameworks in projects that use multiple SDKs.
New Toolbar Items: Active SDK and Overview
You can now set the Active SDK from the Project menu or by adding the Active SDK tool to a window’s toolbar. This is similar to setting the Active Configuration or Active Architecture in that it affects the current project and target, and does not make changes to the project file; but it is different in that it can override the target’s SDK setting with another value.
For example, if you have a project configured for the 10.4u SDK and wish to see if it will compile successfully against the Leopard headers and libraries, you can simply set the Active SDK to Mac OS X 10.5 and build. The active target will be built with the Leopard SDK, allowing you to see what errors and warnings are produced, without having to change any build settings or alter the project file.
The Active SDK setting, like Active Target, Configuration, Executable, and Architecture, is stored in your user file in the .xcodeproj
wrapper file.
Because the combined width of the five Active toolbar items (Target, Configuration, Executable, Architecture, and SDK) is impractical, there is a new “combination” popup called Overview, which displays a synopsis of the current active items and allows you to set all of them from one popup. You can use the Overview popup to replace any or all of the others. The Overview popup will always show at least the Configuration and Executable, and will also show the Target, Architecture, or SDK only if those individual toolbar items are not present in the toolbar.
Cache Files Moved; New Empty Caches Menu Item
Xcode caches both Xcode data and project data for performance optimization. In Xcode 3.1 these caches have moved to a new location in /var/folders
to provide enhanced security. If you will be using Xcode 3.1 exclusively, you should reclaim the cache space used by previous versions of Xcode by deleting the previous caches at /Library/Caches/com.apple.Xcode
(they will be recreated if you open Xcode 3.0 or earlier).
Because Xcode caches can grow to be quite large, there is a new Empty Caches menu item in the Xcode menu that deletes all cached Precompiled Header files, the Xcode plug-in cache, and all other cached data. This may only take full effect after quitting Xcode. You can use this if you have built a large number of projects that you will not build again and need to free up the space taken by cached precompiled headers.
Xcode Source Editor
The Xcode source editor is now significantly faster when opening very large single-line, XML, or HTML files. Several performance improvements have been made in syntax coloring and code completion. Text Macro expansion had been broken in HTML files and has now been fixed. Several problems with text key bindings have been fixed.
Placeholders and Edit All in Scope
A new command, Edit ▶ Edit All in Scope, highlights the identifier containing the selection or insertion point and all other instances of that identifier in the current lexical scope. Candidate terms for this feature appear with a dotted underline when selected, and a popup arrow (much like a standard Leopard Data Detector popup arrow) appears allowing you to select Edit All in Scope. Editing any highlighted identifier will simultaneously edit all highlighted instances. This can be used to rename local variables or formal parameters in the current file (unlike a full Refactoring Rename, it does not affect other files).
When inserting placeholders with CodeSense code completion or text macros, argument placeholders and common identifiers are highlighted automatically. For argument placeholders, the placeholders are depicted as highlighted text, and Select Next Placeholder moves among them. Unedited placeholders will be entered into text surrounded by <# #>
delimiters as in prior versions of Xcode.
Documentation Viewer
A new button allows you to add a new documentation bookmark more quickly, and you can also drag an item from the Documentation Viewer directly into its bookmark list.
Navigation in the Documentation Viewer now tracks your scroll locations in each document, so going back takes you to a previous scroll location in the same page, not to the previous page.
Searching and Indexing
The performance of indexing and searching projects with large numbers of nib files has been improved significantly.
Source Code Management
Checking out a project from a Repository automatically configures it for SCM with that repository.
You can now check a directory out of a repository simply by dragging it to the desktop or a Finder window. Similarly, you can import a folder to a repository simply by dragging it from any folder proxy (even the Xcode Organizer) directly into a location in the Repository Browser.
You can now update or commit all changes to a Perforce repository on a project-wide basis.
Script Menu
You can now use the token %%%PBXSelectionLineNumber%%%
in user scripts; it evaluates to an integer representing the (1-based) line number of the line containing the insertion point or the beginning of the text selection.
Build System Improvements
Most of the changes in the build system in Xcode 3.1 relate to the use of SDKs and architectures.
New Base SDK build setting popup
The "SDK Path” build setting has been renamed “Base SDK.” Its value can be either a path or a name of an SDK. When setting the value in the Build Settings Inspector, you choose an installed SDK from a pop-up menu, rather than entering or navigating to an SDK package in the Developer folder.
In .xcconfig
files and when manually editing the SDKROOT
build setting, you can enter either the full path to the SDK or its short name.
If the project is set for Xcode 3.0 or 2.4.1 compatibility, the SDK name will be converted to a path relative to the $DEVELOPER_SDK_DIR
if appropriate. Projects in 3.1 format will store only the SDK short name for better portability in the future.
New Architectures build setting pop-up; new Only Active Architecture checkbox
The “32-bit / 64-bit” Architectures checkboxes have been replaced with a pop-up . The pop-up offers standard configurations of architectures provided by the current SDK, an Other... item to set your custom architecture choices, and any custom architecture choices you have set.
Current projects generally set the Architectures build setting in the Release configuration to ppc i386
and to $(NATIVE_ARCH)
in the Debug configuration, to build a Universal binary for Release but to build only one architecture for debugging.
Starting with Xcode 3.1, project templates are set up to use the Standard architecture in all configurations, so that developers only change the value of Architectures when they change the code model of their code (for example, to add 64-bit support). To speed building for debugging, there is an additional build setting, Build Active Architecture Only. This is checked in Debug configurations, so that the Project ▶ Active Architecture menu controls what architecture is built and launched during debugging.
You can change your projects to follow a similar pattern. This will allow you to change the architecture you debug simply by choosing a different item from the Active Architectures menu, rather than having to change the build settings on all relevant targets in your project.
If the project is set for Xcode 3.0 or 2.4.1 compatibility, the Architectures value will be converted to a concrete build settings if appropriate, and the Only Active Architecture will appear as a custom build setting if the project is opened in those versions of Xcode.
Conditional Build Settings
Xcode 3.0 supported some build settings defined on a per-SDK basis. Xcode 3.1 adds more per-architecture build settings, introduces per-SDK build settings, and adds wildcard matching.
For many build settings, you can select the setting and choose Add Build Setting Condition. An extra line is added to the build setting with popups for Architecture and/or SDK. Pick an architecture or SDK (or “Any Architecture” or “Any SDK”) and set the value. That value will be used only when the conditions of the popup are met.
This allows you to designate certain values to be used only when an override SDK is in use. For example, you can set a preprocessor macro only for builds with the Mac OS X 10.5 SDK, or an optimization flag only for 64 bit architectures
You can specify conditional build settings in .xcconfig files. The syntax to define an architecture-specific setting is:
SETTING_NAME[arch=arch_pattern] = some_value
SETTING_NAME[sdk=sdk_pattern] = some_value
SETTING_NAME[sdk=sdk_pattern, arch=arch_pattern] = some_value
where arch_pattern
and sdk_pattern
architecture or SDK names you would enter into the ARCHS
and SDKROOT build settings.
The values on the right-hand side of the equals sign may be glob patterns, such as *64*
or macosx10.5*
. These patterns will use the given value for any architecture and SDK that match the pattern. Note that these are shell match patterns, not regular expressions. In Xcode-1059 and later, a pattern that matches the SDK that represents the current OS (for example, sdk=macosx10.5
implicitly matches when the SDKROOT
is unset or set to “” or “/”.
Compiler Version build setting
The GCC_VERSION
build setting is now present by default in the Build Settings pane, and allows you to set the preferred compiler version to any configured compiler (whether the compiler is installed at the moment or not). You can set the compiler version on a per-configuration basis, and use Conditional Build Settings to use different compiler versions for different architectures or SDKs.
Note that this overrides (and is preferable to) setting the compiler version in the Build Rules inspector pane. Use that pane to use a custom compiler script if necessary, otherwise, the Compiler Version build setting is preferable.
Per-File Build Flags Available to Custom Build Rules
A new build setting, OTHER_INPUT_FILE_FLAGS
, is available to Custom Build Rule scripts. It contains all the flags set in the Build tab of an individual build file.
OpenMP Support
A new Linker build setting allows you to specify OpenMP support. You can override this to pass an explicit path to a library, or to pass a library search path and a -l flag to search for the library by name, whichever is preferable.
Support for Weak Frameworks
You can now designate a given framework to be weak-linked in its entirety. This is different from the weak symbol linking provided by the Deployment Target build setting, which allows your application to launch on systems that don’t have specific symbols defined in your linked frameworks; this allows your application to launch on systems where the framework is completely absent. It is your responsibility to check for this situation at run time and avoid using any symbols in the weak framework, or your program will crash.
To designate a framework as weak-linked, select the framework in the target’s Link Binary With Libraries build phase, choose Get Info, and in the General tab check the Weak Link box. You can also check the Weak box in the Libraries and Frameworks list in the Target inspector when you add libraries and frameworks.
Changes to the Install Mode flags
All previous versions of Xcode and Project Builder used default Install Mode flags of “a-w,a+rX” (write-protected for user, group, and others; readable and executable for user, group, and others.) This caused problems on successive builds, as a user build cannot overwrite a build product from a previous build unless the user has write permission. The default Install Mode permissions have been changed to “u+w,go-w,a+rx” (user write-enabled, group and other write-protected, user, group and other all read- and execute-enabled).
xcodebuild
options
The xcodebuild
command-line tool supports several new options for building Xcode projects from the command line. See its man page for complete details.
-sdk
sdkname allows you to specify an SDK at build time
-find
toolname returns the full path to that tool in the SDK, platform, and version of Xcode in use. This is particularly useful in traditional config files when building against an SDK.
Many significant problems reported in Xcode 3.0 have been addressed in Xcode 3.1. In addition to the ones below, hundreds of developer-reported bugs are fixed, and many crashes and memory leaks have been addressed.
Project Editing and Management
Xcode no longer beeps when closing a project after you’ve been debugging. 4542894
Xcode no longer spins for 30 seconds on opening a project in certain network configurations. 5560191
Using BBEdit as an external editor works more reliably now when you have multiple versions of BBEdit. 5574251
Property list files that have been stored as binary plists can be opened in Property List Editor by Xcode. 5510298
Adding a shim dylib to a target now adds it correctly to the Link Binaries build phase rather than the Copy Bundle Resources build phase. 5576928
Xcode build folders are now excluded from Time Machine backups. 5606734
A condition that caused an Assertion Failed internal error due to “!pflags.projectClosed” has been fixed. 5462301
On occasion in All in One layouts, the Detail view would appear too small, surrounded by a large grey box (or be missing altogether), or the Detail view would appear tucked under the toolbar or Favorites bar, so that column headers and segment controls were clipped or hidden. This has been fixed in Xcode 3.1. 4078110, 5482279
Opening a .nib or .xib file from within Xcode 3.1 now correctly launches Interface Builder 3.1. 5788709
The NIB Files smartgroup now shows .xib files as well. 5631186
A problem where two projects with mutual cross-project references could not ever be closed has been fixed. 5853910
A longstanding bug where Xcode would make itself the active application at inopportune times has been fixed. 5793285
Pressing the Tab key with a selection in the Groups and Files tree now no longer opens the selected item for editing. 5764905
Text Editing
Syntax coloring and code folding now respects CDATA blocks in XML and NSData objects in plist format as atomic objects and does not attempt to parse their contents. 5765065, 5771545
Code Sense can now autocomplete, index, and refactor identifiers tagged with GCC attributes like ___attribute((packed) etc. 5478328
Source files with extremely large scalar arrays defined in macros no longer cause the indexer to crash. 5566249
Indent on Return with Metrowerks key bindings enabled was not only broken, but caused Return to be ignored in other places in the user interface. This has been fixed. 5551513
Code Folding now works correctly with the Japanese FEP input method. 5750248
Double-click to select in strings and to balance delimiters now works in cases where code is folded above the location of the double-click. 5717038
Dragging and dropping text and copying and pasting text across folded text ranges could cause text corruption. This has been fixed. 5520726, 5713972
Opening large XML files, large files with non-ASCII text, large files with very long lines, or very very large text files (>10Mb) is now significantly faster, often by two orders of magnitude. 5496096
Scrolling after manipulating breakpoints no longer leaves black artifacts in the gutter area. 5375592
Xcode no longer crashes when the Indent Width is set to 0 on Intel hardware. 5611522
Documentation Viewing
The documentation viewer no longer loses its function popup. 5662600
Pressing the Back button in the Documentation viewer no longer takes you to Safari. 5059558
Searching and Indexing
When “All Project Files” is selected in the Options pane, Find in Project now searches all text files as well as sourcecode files in the project. 5280220
Find in Project no longer searches inside bundles and wrapper directories added to a project. 5323093
The Find in Folders list in the Options panel of Find in Project now accepts build setting values like $(SRCROOT). 5464668
The Find Selected Text, Replace, and Replace All menu items have been restored. 5591661, 5708548
The Rename refactoring now works correctly in cases where two (or more) classes that have same named categories. 5713563
A case where Project Find would skip a matching string that starts with a set of repeating characters in the search string has been fixed. 5794607
Cases where an initial Snapshot would succeed but subsequent Snapshots would fail have been fixed. 5683201
Subsequent Snapshots would delete symlinks copied in a prior Snapshot. This has been fixed. 5609480
A serious bug where Restore from a snapshot would delete files has been fixed. 5815204
Callback typedefs now appear properly in the function popup 2822458
A condition where project indexing would crash due to symlinks has been fixed. 5720817
C++ destructors now appear in the Function Popup with their leading tilde. 5738000
Source Code Management
Many crashes, memory errors, and other problems with Perforce have been fixed. 5671751 Its speed has been significantly increased as well. 5507126
Subversion support now handles svn:externals definitions. 5570480
Renaming files under Source Code Management controls works better now. 4092208
You can get the raw transaction text of SCM operations by copy and paste or drag and drop of the SCM 4863296
Subversion can now work with user names that are email addresses (with an internal @) 5438773
Problems with renaming a file or folder in the Groups and Files outline view being interrupted by other activity (such as SCM operations) have been fixed. 5144185
SCM ▶ Compare allowed you to compare a file against an arbitrary other file in Xcode 2.5 but not in Xcode 3.0. This functionality has been restored in Xcode 3.1. 5594356
Files generated by SCM operations such as Annotate and Compare now have the same file extension as the original file. 5730147
Xcode 3.0 would confuse two SCM repositories using different SCM systems on the same host. This has been fixed. 5029026
Renaming a file that is in the project but not in the project’s SCM repository now works correctly. 4092208
Build System and Setttings
Recursive header search paths would not search all paths. 4169166
If the Executable Extension build setting is set to the empty string, the trailing “.” will now be omitted. 5822758
Per-file build flags set on files that are built both with a Build Rule and then by the C compiler (e.g. Bison, Lex, Flex files, etc.) are now passed only to the Build Rule and not to the compiler. This may break projects that expect the per-file build flags to be sent to the compiler. 4251610
Debugging
Stopping at a breakpoint will use the Debugger window if present, rather than the frontmost editor. 4781477
The Research Assistant no longer uses CPU while Xcode is not frontmost. 5577629
The Clear Log menu item has been restored to the Run menu. 5020597
The debugger no longer shows variables “out of scope” when they are not. 4883236
The debugger no longer crashes with some styles of conditional breakpoints. 5608912
Here are some commonly-reported issues that are known with this release of Xcode.
If the project.pbxproject file inside your project wrapper is locked, your separate user.pbxuser file will not be written, and breakpoints, custom executables, and window positions you change will not be saved. 4440006
Xcode uses the older and deprecated locale naming convention (“English.lproj”) for language locales. 5871463
While most known cases have been taken care of, having a space, comma, slash, backslash, tilde, or other character special to the Unix shell in the directory name of any parent folder of your project can cause your project build to fail in unexpected ways. 4101529
Having the same file in your project referred to both directly and via a symbolic link from separate places can corrupt the project index and cause Xcode to crash. Remove the project index and remove the symlink reference to the file. 4056799
On a very small number of systems and for unknown reasons, the I-beam editing cursor does not hide when you start typing. 4191120
In certain circumstances, applications like Xcode can exhaust the Window Server’s ability to create new windows, causing an NSInternalInconsistencyException Error (1000) creating CGSWindow. This will be addressed in a future version of Mac OS X. 3108154
The Touch menu item (or clicking in the “hammer” column) only works for source code files, not headers, libraries, NIB files, resources, or other project files. 4912312
If you define a Source Tree in the Preferences pane, you must quit and reopen Xcode for it to take effect. 4416517
Xcode does not interact well with Spaces; opening auxiliary Xcode windows may switch you to Xcode’s main Space. 5308807
The function popup does not distinguish between functions with the same identifier. 2566673
Selecting the “Movies” icon in the Open Files... panel causes a crash if iLife ‘08 1.0.5 is installed. 5748459
NSImage caches images in a manner that makes the Objective-C Garbage Collector issue a console log of the form “malloc: free_garbage: garbage ptr = 0x3846140, has non-zero refcount = 1
”. These can be ignored.
The default setting for debugging libraries and frameworks is Load Symbols Lazily. On occasion this causes breakpoints to not be hit. Turning off this setting makes it take longer to start debugging, but hits breakpoints more reliably.
Referring to an .xcconfig
file using #include
does not consult any of the target’s Search Paths; all referenced configuration files should be stored in the same directory. 5850085
Using a port number when setting up a Subversion repository in the Repositories panel generates an inaccurate svn+ssh: URL. Instead of entering the port number in the Repository setup pane, eave off the port number in Xcode and add an entry with the port number in ~/.ssh/config
for the desired host. 5801847
A bug in NSFileManager makes restoring from snapshots fail catastrophically in specific circumstances, such as when the project’s original path contains a symlink. Until this is addressed, ensure that you have a Time Machine backup or a repository version of your working code before attempting to restore from a snapshot. 5468824
An incompatibility in certain versions of iLife Media Browser causes Xcode and other applications to crash if any Media item is selected in the Open... panel. This condition will persist until Open... is used in another application and the selection in the Sources pane is set to some item other than a Media source. 5748459
If you build a project prior to importing it into SCM, then the project’s build folder may be imported into your repository, and subsequent Commit Entire Project operations will fail. Remove the build folder from the repository. 4896482
Regular expression searches are limited to single lines. 5842770
Building a Debug configuration of a project that uses the Only Active Architecture setting may not correctly build targets in cross-project references to closed projects. 5908284
Only the version installed in /Developer
is available as a Distributed Build volunteer by other computers. 5939834
When adding frameworks or libraries using the Target Inspector, you can only see frameworks in the SDK that the inspected target is configured for. To add frameworks from a different SDK, first change the Base SDK setting of that targer. 5931773
Find in File and Project Find will only find the actual key names in a Property List file, not the display names as seen in the Property List Editor. 5946354 Replace does not work in the embedded Property List editor; command-click and choose Open As ▶ Source Code File to perform Find and Replace. 5946376
Syntax-Aware Indentation does not work correctly with certain keyboard layouts, such as German. 5848499
The default Build and Go toolbar item is not useful in projects without a configured Executable, such as KEXT projects. Add a Custom Executable or replace the Build and Go item with Build. 5939297
If your project has .strings
files in UTF-8 format and your application code expects to read them in UTF-8 format, you need to add the build setting STRINGS_FILE_OUTPUT_ENCODING = UTF-8
to the target that copies the .strings
files. The default in Xcode 3.1 is to output .strings
files in UTF-16 format. 5897320
After using Xcode 3.1, if you open any project in Xcode 3.0 using the same user account, all your project toolbars may revert to Xcode 3.0 factory settings. To restore the Xcode 3.1 default toolbar configuration, execute defaults delete com.apple.Xcode PerspectivesToolbar.com.apple.perspectives.project.mode1v3.PBXModule.XCPerspectiveModule.Project
in Terminal (Condensed or All-in-One users substitute defaultv3
or mode2v3
for mode1v3
. 5957247
The About Xcode Tools document discusses Xcode and its role in development on Mac OS X.
Xcode 3.0 is a major revision of the Xcode development environment. Please see the Xcode 2.5 Release Notes for details about previous versions of Xcode.
Supported configurations
Xcode 3.0 will run on Mac OS X 10.5 (Leopard) on a Macintosh with either a PowerPC or an Intel processor. It will not install or run on earlier versions of Mac OS X. Xcode supports development for Mac OS X 10.3 (Panther) and Universal development for Mac OS X 10.4 (Tiger) and Mac OS X 10.5 (Leopard) using the Mac OS X SDK support.
Xcode Installation
The Xcode Developer Tools will install by default into /Developer
, but you may choose to install Xcode 3.0 anywhere on the system, including on partitions other than the boot volume. When changing the installation location, you must create a folder for the tools with the "New Folder" button in the location chooser. You can also move or rename the entire developer directory after installing. The developer directory’s subdirectories, applications, and other content must not be moved or renamed, and you must quit all developer applications before moving or renaming the developer directory.
It is now possible to have multiple versions of Xcode tools installed on the same system but running independently. The Xcode IDE will use the SDKs, build tools, and auxiliary applications from the developer directory it is launched from whenever possible, rather than those from the root system.
The Xcode Developer Tools installer also installs the standard system development tools and interfaces into /usr
, so conventional makefile- and config-based builds will operate correctly. There is no way to switch among versions of most these tools; the last installed version replaces all other versions. A few of these tools, including /usr/bin/xcodebuild
, can switch among versions; see the xcode-select
manpage for more information. Installation of these tools can be disabled by turning off the UNIX Development Support choice in the installer.
If the UNIX Development Support is not installed, all projects must build against an SDK, and conventional makefile-based builds should execute the standard development tools from the developer directory’s usr/bin
directory instead of the root system’s /usr/bin
. This can be done by adding the full path to that directory to the PATH
environment variable and making sure that your build scripts and makefiles do not have absolute references to tools such as /usr/bin/gcc
, instead always using the shell’s path mechanism to launch the tools. Alternatively, tools can be invoked using a path returned by xcode-select -print-path
; see the xcode-select
manpage for more information.
Support for building for Mac OS X 10.3.9 is disabled by default. To enable this support, click Custom Install and check on the "Mac OS X 10.3.9 Support" in the Installer.
Launching Xcode IDE
Xcode version 3.0 takes advantage of two major architectural features of Leopard: 64-bit support and Garbage Collection. The Xcode IDE runs under garbage collection on all machines, and on 64-bit capable hardware, can be launched in 64-bit mode. To run Xcode in 64-bit mode on a 64-bit machine, use the Finder’s Get Info command and uncheck the “Open in 32-Bit Mode” checkbox.
The xcodebuild
tool never runs with garbage collection. It can be run in 64-bit mode on 64-bit hardware with the command arch -ppc64 xcodebuild
or arch -x86_64 xcodebuild
. Tools invoked by the Xcode and xcodebuild
are generally run as 32-bit regardless of how the IDE or tool is invoked, with the exception of the ld
linker, which always runs as 64-bit on 64-bit hardware.
Project File Format Compatibility
Xcode 3.0 reads and builds project files written by Xcode 2.1 through 2.5, and will automatically upgrade project files from Xcode 1.5 through 2.0. Xcode 3.0 does not reliably read project files from Xcode 1.2 or earlier, or Project Builder project files; upgrade these with Xcode 2.5 before installing Xcode 3.0.
It is strongly recommended that when converting pre-Xcode 2.1 project files to Xcode 2.2 and later you also upgrade all the project’s targets to Native Targets using the item in the Project menu. Many Xcode features, including support for building Universal Binaries, are not supported for non-native (“Jam-based”) targets.
As of Xcode 3.0, you can set the compatibility requirements of your project in the project’s Get Info inspector’s Project Format popup (in the General tab). When your project is using features which are not compatible with the chosen format, Xcode will display a red conflict indicator in the project’s Get Info inspector’s General tab and in the project’s status bar. To resolve these conflicts, either change the compatibility requirements of your project or use the inspector’s “Show Conflicts” button to find the incompatible features and manually remove them from the project.
Project Root
Xcode 3.0 has a concept of a project root, the top-level file system directory that encompasses all your project's items (and may be at a higher level than the project file's folder, commonly known as $(SRCROOT)
). This location is used as the base for many Xcode features such as SCM and project-wide Find and Replace, as well as new Xcode 3.0 features like Refactoring and Snapshots. Xcode tries to determine automatically the correct top-level directory; you can set it yourself in the Project inspector’s General tab if its guess is incorrect. You can set the Project Root for each project, in the General tab of the Get Info window for the project.
Major menu reorganization
The main menu bar of Xcode has been substantially reorganized. New menu items have been added to support new Xcode 3.0 features; a small number of rarely-used or deprecated features have been removed; and a large number of items have moved in order to shorten and simplify the top-level menus.
Important: Many items are now alternates to other items that share the same command key. Hold down the Option, Control, and Shift keys to see all the items in the File, Edit, and View menus.
The Help ▶ Search menu item can help you find a menu item that’s been moved to a submenu.
File menu: Add snapshot support. Add Recent Files. Collapse multiple Open, Close, and Save items. Integrate Open Dictionary and Import Project into Open item. Move Group commands to Project menu. Merge Page Setup into Print. Move Make Global/Make Localizable to inspector. Move Rename to direct editing of item.
Edit menu: Add Format submenu. Add Find submenu. Add Add Bookmarks and Go to Line items from Find menu.
View menu: Add Code Folding, Message Bubbles submenus. Add Text submenu with formerFormat menu items. Add Syntax Coloring submenu from former Format menu. Add Layout submenu. Remove Clear File History Next/Previous Detail, Next/Previous Page. Move Open in Separate Editor to File menu. Merge Reveal in Class Browser into Class Browser item.
Format menu: Remove and distribute items to Edit and View menus
Find menu: Move to Edit menu or context menus in individual views
Project menu: Add Group commands from File menu. Remove Upgrade to Native Target item.
Build menu: Remove Enable Zero Link (feature removed). Extensive changes for new Streamlined Debugging feature, below.
Debug menu: Change to Run. Extensive changes for new Streamlined Debugging feature, below.
SCM menu: Extensive changes for new Repository management, see below.
Help menu: Merge individual release notes into Xcode News.
Templates
The location for Xcode templates, scripts, and other support files has changed. These files were previously located in /Library/Application Support/Apple/Developer Tools/
and /Library/Application Support/Xcode/
. They are now located in the developer directory’s Library/Xcode/
folder. Additionally, your own custom support files should now be placed in a folder of the appropriate name (e.g. "Project Templates
") in any of the following locations:
/Library/Application Support/Developer/3.0/Xcode/
/Library/Application Support/Developer/Shared/Xcode/
~/Library/Application Support/Developer/3.0/Xcode/
~/Library/Application Support/Developer/Shared/Xcode/
Please see What's New in Xcode for a complete guide to these new features:
Objective-C 2.0
Objective-C has been enhanced with support for properties, fast enumeration, optional methods in protocols, and garbage collection.
Interface Builder
A completely new Interface Builder is included in Leopard. See the Interface Builder documentation for complete details.
Refactoring
Xcode now gives you the ability to refactor Objective-C code and nib files. A global refactoring, Convert to Objective-C 2.0, changes manual iterations to new Objective-C 2.0 syntax. Individual refactorings are currently available for:
Rename
Create Superclass of
Move Up
Move Down
Encapsulate
Extract Method
Modernize for Loop
Move Implementation to Subclass
Refactoring allows you to accept or reject offered refactorings on a file-by-file basis.
Organizer
The Xcode Organizer is available in the Window menu. This is a convenient place to drop project files, non-project text files, or entire folders of frequently-accessed information for quick reference and navigation.
Folders in the Organizer represent the contents of directories in the file system. You can move, rename, and delete files and directories using the Organizer. The Action (gear) button at the bottom of the Organizer window allows you to add new files or directories into the selected directory in the Organizer. When creating a new file or folder, you can optionally choose a template to base the new item on; Xcode will make a copy of the template in the designated place on disk and add it to the Organizer.
You can edit documents in the Workspace’s embedded editor or double-click them to open them in a separate window. When a directory is selected in the Organizer, the Edit ▶ Find ▶ Find in Project menu item changes to Find in Folder, and allows you to do deep searches within that folder.
The Build, Clean, Run, and Action tools allow you to attach arbitrary shell commands, shell scripts, AppleScript files, or Automator workflows to Organizer folders and invoke them from the toolbar or main menu. Actions attached to a folder are also available to all enclosed folder; with this, you can define one operation on a directory and invoke it on any deeply-nested file in that directory. Build commands are executed in the Build Results window; Run and Debug commands are executed in the graphical Debug or Console windows.
If you want to share action tools with others, you can define them in an .xccommands file in your project directory before adding that directory to the Organizer. The scripts attached to an Organizer item can be exported to an .xccommands file with the Export Actions... menu item in the Gear button at the bottom of the Organizer window.
Snapshots
You can take a “snapshot” of project state at any time (such as after a successful build or before refactoring). If you later decide to discard all changes, you can restore your files to the contents of a snapshot. Edit ▶ Make Snapshot Now makes a full copy of your project; if you later make changes you don't want to keep, you can use Edit ▶ Snapshots... to choose a snapshot, examine how it differs from your current project, and restore your project or individual files from it to the state as of that snapshot.
Directories in the Organizer can also be snapshotted.
Snapshots are stored in a sparse .dmg file in your user directory; you can protect this with a password if you choose for added security (using DiskUtility). The snapshots are stored in ~/Library/Application Support/Developer/Shared/SnapshotRepository.sparseimage
and mounted in your /tmp
directory.
Xcode Source Editor
The new source code editor in Xcode 3.0 edits large files up to 5 times faster than Xcode 2.5 and opens very large files almost instantly, instead of in tens of seconds. Syntax-aware indentation now works better than it did in Xcode 2.5 and earlier, handling many cases (such as multiline comments) that were handled poorly before.
Syntax Coloring, Code Focus, Code Folding, and Code Sense Completion work with dozens of text file types supported by Xcode: C, C++, Objective-C, Objective-C++, Rez, Property Lists, XML, HTML, Perl, Python, Ruby, Fortran, and others.
There are some special considerations for certain languages. For example, the Python languages considers tab characters to be semantically significant, and assumes that a tab character equals eight spaces. For Code Folding and indentation to work correctly for Python, set View ▶ Text ▶ Tab Settings to 8 characters. It may also help to disable the Editor Uses Tabs setting in Xcode Preferences ▶ Indentation.
Code Focus
Code Focus shows you the block structure of your code on demand. A new Focus Ribbon shows the nesting depth of every line of code; moving the mouse pointer into the ribbon highlights the blocks of your text by nesting depth, without changing your selection. This is great for checking for misbalanced parentheses, unbroken switch statements, etc.
The Code Focus feature can also be latched on with the Code Focus menu item in the View menu, or using the Command-Control-Option-F keyboard shortcut.
The Focus Ribbon also contains controls for Code Folding. You can collapse brace structures, C-style comments, and other nested structures in C-like languages, XML, and plists. You can also invoke folding and unfolding from the View or contextual menus, or by the shortcut keys listed in those menus.
Code Sense Inline Completion
Code Sense code completion is now done inline, as in Mail, Terminal, and other applications. You can confirm completions with the Tab key (not F5 any longer) and invoke the traditional completion pop-up menu with the Escape key.
CodeSense now completes build setting values in .xcconfig
files and file paths and names in #include statements.
Syntax Coloring
Syntax coloring now supports separate colors for different kinds of symbols: classes, types, constants, functions, and variables, as well as macros and comments. Xcode ▶ Preferences ▶ Fonts and Colors allows you to control the individual colors, and define, load, and save preferred color themes. Both uncolored and syntax-colored text are placed on the Pasteboard for copy and text drag operations.
Message Bubbles
Errors, Warnings, and Breakpoints are now shown inline in source text, not just as icons in the gutter. Show them with the View ▶ Message Bubbles menu or the context menu in the text editor. Multiple messages are consolidated into single bubbles; bubbles can be shown or hidden by clicking on the error or warning icon in the gutter, or by using the context menu on the icon in the gutter.
Class Navigator
The Navigator Bar now contains a Class Navigator next to the Bookmarks popup. This allows you to move quickly in the class hierarchy to the superclass or subclasses of classes defined in the current file.
Open Quickly improvements
Open Quickly now accepts the same line number format as Go to Line; follow the filename with a colon and a line number or colon-separated range to go directly to a line in a file. You can also navigate directly to the implementation or declaration of a symbol by entering the symbol into the Open Quickly box, or just by selecting the symbol and pressing Command-Shift-D.
Command-line tool to open a file in the Editor
A command line tool allows you to open existing files, create new untitled or named files, and pipe text from standard input into Xcode's editor. You can use this as your EDITOR
shell variable for command-line operations on text. The command is installed at /usr/bin/xed
; the documentation can be found with man xed
.
Streamlined Debugging
In Xcode 3.0 the distinction between Run and Debug has been blurred. You can opt to launch your application under the debugger (Debug) or not (Run), but you do not need to stop and restart your application.
There is no more Standard I/O Log or Run Log, there is only the Console. Stdin to your app is now sent via the Console log while executing and to the debugger when paused. The Console window now has a toolbar like the old Run window formerly did. To make this available in existing projects, remove the <user>.mode*V3 file from the project wrapper. The debugger prompt and text colors set in the Debugger preferences are visual indicators for where the input is going.
Datatips are structured, hierarchical tool tips that show the value of variables in scope during debugging, right in your text file. You can even descend into objects or structures and perform actions, such as printing the object to the console.
The Xcode debugger now shows you the contents of C, CoreFoundation, and AppKit array types, as well as STL vectors. The first 10 array elements are shown by default, and controls allow you to see the next and last 10.
A Mini Debugger allows you to pause and step through your application while it is in front, without activating Xcode.
Debugging with Go The Debug menu has been re-organized with new launch options: Run, Debug, and Go. Corresponding changes have been made to the Build menu. Run and Debug launch the executable without and with breakpoints enabled, respectively; Go launches the executable with the breakpoint status unchanged from your last session. If you Run but then Activate Breakpoints to debug a problem, Xcode automatically launches the debugger and attaches it to the running application so you don’t have to restart your session. If you launch using a performance tool like Shark, you can use Go (or Build and Go) to launch with Shark again.
For convenience, the command-key equivalents for Go are variants on the Return key.
Project Find
The Project Find module has been rewritten to search projects and directories considerably faster. For text searches in UTF-8 files, the speed is now comparable to grep
. Project Find can now search in cross-project references as well as the current project alone: select a current Find Set (like “Project” or “Project and Frameworks”), click the Options button, and click the “Project and referenced projects” radio button. Project Find now supports “Find in source and headers” with a new checkbox in the Options panel, and a new search style “Symbols” that searches for uses of symbols (call sites), rather than just definitions or plain text. Regular Expression searches now find multiple matches on the same line.
Classes, connections, and bindings in nib files are now indexed and can be found in the Project Symbols smartgroup, Go to Definition (command-double-click), and Find in Project's Definitions or Symbols search.
Xcode's Spotlight importers for source code now index only the identifiers in your source, not the full text, making it easier to find appropriate code files with Spotlight. It also indexes the target, configuration, and product names from project files, so you can find what project builds a specific target or executable using Spotlight.
Documentation Viewing
The documentation viewer has been completely revamped. It manages Documentation Sets (downloadable and installable separately, with update notifications broadcast via subscriptions and RSS) and does full-text, API, and Document Title searches within a documentation set or across documentation sets. The API search now does “contains” matches rather than “starts with” by default. The Documentation Viewer supports the same Class Navigator popup as in the Source Editor.
Research Assistant Choosing Help ▶ Research Assistant opens a new floating window shows the declaration, abstract, and usage notes about system APIs, macros, and build settings. It covers both Apple frameworks and standard Unix C APIs, and has detailed information on API deprecation and 64-bit availability of functions and methods. Open the Research Assistant and as you select terms, the window shows useful information about the selection.
SCM Repository Management
You can now manage SCM repositories (Perforce, Subversion, and cvs) from within Xcode. The current feature set allows you to configure your repository access, manage repository authentication, browse the repository, check out a revision, and import a new project into the repository.
New Build Properties inspector tab
The Build tab of project and target inspectors has been redesigned and supports several new features. You can define per-architecture variants of most compiler-related build settings by using the Action (gear) menu in the inspector. Build settings and values can be sorted, as well as collapsed and filtered in the new outline view. Most values can be edited in the cell using the standard “click-and-a-half” editing technique.
Build System Improvements
There have been few changes in the Build System so your Xcode 2.4.x projects should build the same as they did on Tiger (excepting, of course, the change from Tiger APIs to Leopard). Most of the changes in building are to support building Objective C 2.0 and 64-bit.
New Architectures sheet for 32- and 64-bit building
The “PowerPC / Intel” Architectures checkboxes have been replaced with “32-bit / 64-bit” checkboxes. Both settings are explicitly Universal. If you want an Architectures setting that is different from the ones provided by the checkboxes, select the Architectures line and press Tab to enter the Value column of the Architectures setting to edit your architecture list manually.
The checkboxes transform hardcoded architecture settings (e.g. ppc or i386) into sets of hardcoded values (e.g. ppc64 x86_64
). If the Architectures build setting contains $(NATIVE_ARCH)
, the checkboxes transform it into a build setting that is useful for debug builds:
$(NATIVE_ARCH_32_BIT)
The 32-bit version of the build machine’s architecture. This is useful for non-64-bit-aware code.
$(NATIVE_ARCH_64_BIT)
The 64-bit version of the build machine’s architecture. This is useful for 64-bit-only code.
$(NATIVE_ARCH_ACTUAL)
The actual build machine’s architecture. This is useful for building “best thin for this machine.”
Per-Architecture Build Settings
The new Build Settings editor (available for both targets and projects) supports per-architecture entries for build settings that affect compilation and code generation. By selecting a build setting and choosing "Add Per-Architecture Setting" from the Action (gear) popup, you can specify different values for a setting for each architecture. If you don't specify a per-architecture setting for a given architecture, the "base" value of that build setting is used.
You can now specify per-architecture build settings in .xcconfig files. The syntax to define an architecture-specific setting is:
SETTING_NAME[arch=arch_name] = some_value
where arch_name
is a valid architecture name as you would enter in the ARCHS
build setting
New and Removed Build Settings
There are new predefined build settings that provide the major and minor versions of Xcode and Mac OS X at build time. These are in a format compatible with the Availability Macros so they can be passed down to your sources in Preprocessor Macros if desired. See the Build Settings Release Notes for details.
The Objective-C Garbage Collection setting enables compiling and linking Objective-C code for automatic garbage collection. It has three states: Unsupported disables garbage collection; Required (-fobjc-gc-only
) will create an executable that runs only on Mac OS X 10.5 and later and will always run garbage collected; and Supported (-fobjc-gc
) will create an executable that can run either garbage collected or not, depending on how the user chooses to launch it or, in the case of libraries and frameworks, whether the invoking application is using garbage collection.
The Enable Supplemental SSE3 Instructions build setting now sets the -mssse3
flag in gcc 4.0.
The Treat Missing Function Prototypes as Errors build setting now sets the -Werror-implicit-function-declaration
flag in gcc 4.0 for C and Objective-C only.
The Order File build setting now sets the -order_file
parameter of the linker. Its value should be a path to a file relative to the project folder; that file should contain the newline-separated mangled names of functions in the linked executable, in order of call frequency. Order files help increase locality of reference and reduce swapping.
In Xcode 3.0, the Zero Link build setting is ignored and has no effect. It still appears in the user interface and is preserved for backwards compatibility with Xcode 2.5 and earlier, but all executables are always fully linked in Xcode 3.0.
In Xcode 3.0, the Essential Symbols feature for STABS-based debugging has been removed, and its build setting is ignored.
Composite SDKs
You can now specify multiple SDKs; for example, a system SDK, a QuickTime SDK, and the SDK for a third-party library or framework. To do this, set the Base SDK Path build setting to a system SDK and set the Additional SDKs build setting to the list of additional SDKs to composite. At build time Xcode will create a composite SDK and cache it in a common location; all projects that use that combination will share the one composite SDKs. This allows you, for example, to use libraries provided by third parties when building against a system SDK.
Parallel Target Builds
A checkbox in the Project Inspector allows all aggregate targets in the project to build their dependent targets in parallel when possible. This means that you can build a short command-line tool while preprocessing your header files for your main application. This is especially useful on multiprocessor machines and while using Distributed Network Builds or distcc.
Note: Using parallel target builds may reveal implicit dependencies that have been masked by the serial building of targets. Turning on parallel target builds may result in intermittent and hard-to-reproduce build failures due to one target needing the output of another that has not yet been built. Inspect your project carefully and ensure that each target has its Direct Dependents set correctly before enabling Parallel Target builds.
Two- and Three-Way Unit Tests with Garbage Collection
Unit Tests now run as many architectures as possible on the build machine. Unit tests on Intel will attempt to run the 32-bit PowerPC unit tests in Rosetta, and tests on 64-bit machines will run both 64-bit and 32-bit architectures. Unit Tests can now be run on garbage-collected Objective-C code.
Run Script Build Phase
You can check a check box in the Run Script build phase to suppress the output of environment variables in the build log.
Xcode News
If you launch Xcode with no projects, documents, or other windows open, the Xcode News window will appear, showing a selection of the Apple Developer Connection website with news and information for Apple developers. You can reopen this window at any time using the Xcode News item in the Help menu; a checkbox on the window prevents its opening automatically at launch for that release of Xcode.
CoreData Mapping Model and Model Versioning
There is a new Design Model available in the Design menu to create Core Data mapping models. In addition, data models are now versioned, so you can change your data models and retain compatibility with older data files.
Here are some commonly-reported issues that are known with this release of Xcode.
Creating a project in /tmp may prevent certain project template variables to not expand properly
Changing the Configuration popup in the Build Settings inspector may not update the Based On popup. Close and reopen the inspector to see the correct value.
After changing from Textual to Definitions and back to Textual, Project Find may not find all valid matches in a project.
The Build toolbar item is occasionally disabled when the project is buildable. Use the Build menu item instead.
Much of the functionality new in Xcode 3.0 does not have AppleScript support.
Circular #includes of header files or a cycle of symbolic links may cause Xcode to crash while building or indexing a project.
Opening the same project file simultaneously from two separate instances of Xcode may cause one to crash.
Projects that generate source files at build time must turn off Lazy Symbol Loading in order to stop at breakpoints in those files.
Strings containing Unicode characters do not display properly in the Debugger.
Deleting a header file from a project may not force a rebuild of source files that include it.
You cannot recover a deleted project from a snapshot of it using Xcode. Navigate directly to the Snapshot repository and duplicate the most recent snapshot.
Custom Build Rules no longer output the value of all environment variables in the build log, and there is no way to make them do so. IF you need to do this in order to debug a build rule, add a “set” command to the rule script.
As in previous versions of Xcode, for some Preferences (especially Distributed Builds) you may need to close the Preferences panel and reopen it in order to see the new value of the settings in the Preferences pane.
You cannot distribute builds using Shared Network Builds if Xcode 3.0 is installed in a location other than /Developer
.
Sharing your computer for distributed builds and changing the share priority for build tasks on your machine require administrator privileges. If you are unable to unlock sharing in the Xcode 3.0 Distributed Builds Preferences pane, ensure that you have a valid administrator user name and password. If you are still unable to authorize sharing, you will need to re-install the Developer Tools.
Sharing your computer for distributed builds also requires that your machine be able to reach the remote build host(s) over the network. If remote hosts are unable to access your machine for distributed builds, first ping the remote machines to ensure that your machine can reach them over your network. For network problems, contact your system administrator.
Sharing for distcc
If the checkbox "Share my computer for shared workgroup builds (distcc)" in the Xcode 3.0 Distributed Builds Preferences is enabled, and you can ping the remote build host(s) in your workgroup, check the configuration of your machine.
The executable /usr/bin/distccd
must be installed, owned by root:wheel
, with permissions -rwxr-xr-x
The file /System/Library/LaunchDaemons/distccd.plist
must be installed, owned by root:wheel
, with permissions -rw-r--r--
If any of these conditions is not true, you should reinstall the Developer Tools.
If your system appears to be configured correctly, you should be able to start the shared workgroup builds daemon by typing the following command into a Terminal window:
sudo launchctl load -w /System/Library/LaunchDaemons/distccd.plist |
Turning off sharing for distcc
If the checkbox "Share my computer for shared workgroup builds (distcc)" in the Xcode 3.0 Distributed Builds Preferences is disabled but Activity Monitor shows one or more distccd processes running on your machine, you should be able to stop all the distccd processes at once by typing the following command into a Terminal window:
sudo launchctl unload -w /System/Library/LaunchDaemons/distccd.plist |
Note that the "kill" command will stop but not disable the daemon, and launchd will immediately relaunch it.
If you encounter an error when attempting to enable or disable the checkbox "Share my computer for shared workgroup builds (distcc)" in the Xcode 3.0 Distributed Builds Preferences, follow the steps above for sharing or stopping sharing of distcc.
Changing the share priority for shared workgroup builds (distcc)
If you are able to set the share priority of your machine for shared workgroup builds in the Xcode 3.0 Distributed Builds Preferences, but the priority of the distccd process(es) on your machine does not change, check the configuration of your machine.
The executable /Library/Developer/3.0/distcc/distcclaunchdconfig
must be installed, owned by root:wheel
, with permissions -rwxr-xr-x
The file /System/Library/LaunchDaemons/com.apple.distccdConfig.plist
must be installed, owned by root:wheel
, with permissions -rw-r--r--
If any of these conditions is not true, you should reinstall the Developer Tools.
If your system appears to be configured correctly, you may be able to change the priority of the shared workgroup builds processes by typing the following command into a Terminal window:
sudo renice <priority> <pid> |
for the process with the lowest process ID. Valid priorities are 0 (high), 10 (medium), and 20 (low).
If you encounter an error when attempting to set the share priority for shared workgroup builds in the Xcode 3.0 Distributed Builds Preferences, follow the steps above.
Sharing for dedicated network builds (DNB)
If the checkbox "Share my computer for dedicated network builds" in the Xcode 3.0 Distributed Builds Preferences is enabled, and you can ping the remote build host(s) in your dedicated network, check the configuration of your machine.
The following files must be installed in /Library/Developer/3.0/DNB/DedicatedNetworkBuilds.framework/Resources
, owned by root:wheel
, with the correct permissions:
DNB.zip -rw-r--r--
bfobserver -rwxr-xr-x
dnbd -rwxr-xr-x
scmount -rwxr-xr-x
The following files must be installed in /System/Library/LaunchDaemons
, owned by root:wheel
, with permissions -rw-r--r--
:
com.apple.dnbobserver.plist
com.apple.dnbvolunteer.plist
If any of these conditions is not true, you should reinstall the Developer Tools.
If your system appears to be configured correctly, use Activity Monitor to check that both the bfobserver and dnbd daemons are running. If one or both of these daemons is not running, you should be able to start it manually by typing the appropriate command into a Terminal window.
First start the build files observer:
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.dnbobserver.plist |
Then start the DNB volunteer:
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple. dnbvolunteer.plist |
Stopping sharing for dedicated network builds (DNB)
If the checkbox "Share my computer for dedicated network builds" in the Xcode 3.0 Distributed Builds Preferences is disabled but Activity Monitor shows a dnbd process running as root on your machine, you should be able to stop the process by typing the following command into a Terminal window:
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple. dnbvolunteer.plist |
Note that the "kill" command will stop but not disable the daemon, and launchd will immediately relaunch it. You should not stop the build files observer daemon (bfobserver).
If there is a dnbd process running as your user ID on your machine, your machine is acting as a dedicated network builds remote host (recruiter), sending build jobs to other machines. Killing that process will not disable your machine for sharing for dedicated network builds.
If you encounter an error when attempting to enable or disable the checkbox "Share my computer for dedicated network builds" in the Xcode 3.0 Distributed Builds Preferences, follow the steps above for sharing or stopping sharing of dedicated network builds.
© 2008 Apple Inc. All Rights Reserved. (Last updated: 2008-11-19)
|