|
|
Log In | Not a Member? |
Contact ADC |
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. Please see the Xcode 3.0 Release Notes for details about previous versions of Xcode.
The About iPhone SDK document discusses Xcode and its role in development for Mac OS X and iPhone.
General
Summary of New Features
Significant Bug Fixes from Xcode 3.0
Known Issues and Workarounds
Additional Documentation and Help
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.
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.
-sdksdkname 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, 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, 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
Xcode can now alert you to the availability of updates to the Apple Developer Connection (ADC) reference library and help you download the new content. See the Documentation Access for more information.
The documentation window now uses SearchKit indexes when performing full-text searches. Besides improving search speed and the general quality of the set of results, full-text searches now support boolean search strings and wildcard searches among other features. See the Searching Documentation for more information.
Additional release notes for Mac OS X are located in the Core Documentation documentation set. In this documentation set, there are release notes on specific tools, such as the GCC 3 Release Notes, the GCC 4 Release Notes, the GDB Release Notes, and the Compiler Tools Release Notes, on APIs (for example CoreFoundation Framework Release Notes, Application Kit Release Notes (10.5), Foundation Release Notes, Carbon Core Release Notes, etc.), and on other technologies like Release Notes > Java and Release Notes > WebObjects.
http://developer.apple.com: Apple’s Developer Central site is the best source of official up to date technical documentation on Mac OS X as well as being the primary place to find out about developing for the Macintosh platform.
http://developer.apple.com/tools/xcode: The Xcode home page on Apple’s developer site.
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.
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.
Last updated: 2008-06-26
|
Get information on Apple products.
Visit the Apple Store online or at retail locations. 1-800-MY-APPLE Copyright © 2007 Apple Inc. All rights reserved. | Terms of use | Privacy Notice |