Apple today released their fifth preview of their upcoming Xcode 4 to developers. This fifth preview includes a solid amount of new features, enhancements and fixes but nothing major to note. Here’s a summarized list of the most notable features and enhancements:

This preview introduces new features and enhancements for tabs, editor panes, and alerts. These features are designed to scale the single window interface of Xcode 4 to more effectively use available screen real estate, from the 11” MacBook Air, up to Macs equipped with multiple monitors. Please experiment with these new features to see how Xcode 4 can speed up your daily development tasks.

You can view the entire set of release notes after the break:

Editors: The built-in editor modes, Standard, Assistant, and Version are designed to present the most critical information, in context, as you work. New in this seed, clicking the icon on the far-right of the Jump Bar will split the current editor pane. The split editors have their own history, and Assistant editor splits can each present counterparts as you work in the primary editor. The General preferences pane now configures document open behaviors, such as option-click to create a split, or double-click to open a new window for the selected document.

Tabs: Much like in Safari, each Xcode 4 tab is an independent view of the complete work area. Selecting File -> New Tab (or pressing CMD-T) will create a new tab view of your current project or workspace, with its own window sizes, Navigator/Utility geometry, and editor layout. Tabs and their customized layout is preserved between launches of Xcode 4. The tab name defaults to the file in the active editor, or double click the tabʼs label to give it a permanent name. For computers with a lot of screen space, tear a tab off and move it wherever you like. Configure a tab for Interface Builder design tasks, debugging activities, and code editing.

Alerts: Certain tasks are common during development, among them Build, Test, and Run. The Alerts preferences panel configures specific actions or changes in state within the IDE when you perform these tasks. For example, the Run command can automatically switch to a tab called Debug (or the IDE will create the tab for you). As described above, each tab can be independently configured, creating a custom debug experience whenever the app is Run.

Experiment with Alerts, tabs, and the new editor views to automate your daily workflow. Additional improvements in this seed:

• Tabs (under File menu) can be re-arranged, renamed, or torn off as new windows • General preference pane Navigation area defines option-click, and double click actions

– e.g.: can set the double-click action to open the file in a new editor window • Editor panes, including the Assistant editor, can now be split to create additional editors • Scheme enhancements, including default Test, Profile, and Run schemes • Improved history (back button) within editor panes, and navigation within the Jump Bar • Additional refactoring operations, including create superclass, and extract • Additional SCM support, including a merge operation with a preview before completion • Auto-save before critical operations, avoiding the frequent prompt dialog • Simplified key combinations and menu layout for many common operations • New project templates now offer to create unit tests by default • New Project templates now offer to put the created project under Git SCM control

_____

New Features

General

The build action in the scheme dialog allows you to choose which targets should be built for each scheme action. 8025069

Each scheme action specifies the build configuration to use when Xcode performs that action as part of a build. Setting up a scheme with scheme actions that use particular build configurations allows you to, for example, set up a scheme that runs the product with the Debug configuration but profiles it with the Release configuration. 8090845

The Build and Archive command archives the products of the targets selected in the active scheme for archival, including their dSYM files. You submit your products to iTunes Connect using these archives. You can also use them to symbolicate crash logs. 7696041

The post-action scripts of archive scheme actions have access to information about the just-built archive in their environment:

ARCHIVE_PATH: The path to the archive. ARCHIVE_PRODUCTS_PATH: The installation location for the archived product.ARCHIVE_DSYMS_PATH: The path to the product’s dSYM files. 8423449 Xcode detects and enforces implicit build dependencies between targets when you build a scheme.

You can turn this off per scheme in a scheme’s build action. 7879553

When the active scheme is a unit-test scheme, clicking Run in the toolbar produces an unknown error dialog.

To run unit tests, choose Product > Test. 8642393

Fix-it is not supported in iOS application projects created using the new project dialog. The iOS project templates have the compiler set to LLVM-GCC, which does not support Fix-it.

After creating an iOS project, set the compiler to LLVM 2.0. 8607314

Editing Core Data Models You can create NSManagedObject subclasses from entities in a Core Data data model. 7484772

Refactoring The Extract transformation is supported. 7711619

Compiling: LLVM 2.0

Blocks: Goto statements within blocks are allowed when the target is within the block. 7549164

Objective-C: Fixes bugs in exception handling present in LLVM 1.5. 8160285

You can declare instance variables in class implementations and extensions (iOS and 64-bit Mac OS X). 7538989

Analyzing OpenGL ES Performance The OpenGL ES Performance Detective identifies graphics bottlenecks in your iOS applications. It is

located in <Xcode>/Applications/Graphics Tools. 8208239 Runs of the OpenGL ES Analyzer instrument can be saved in Instruments traces. 7993423 The OpenGL ES Analyzer instrument supports extended filtering of the OpenGL ES trace. 7976717

The OpenGL ES Analyzer instrument provides single-frame navigation, which allows you to focus all instruments on a specific OpenGL frame, and to step backward and forward in the trace frame by frame. 8552970

Enhancements

General

You can access the values of the build settings of the target being built through environment variables and launch arguments. When you create custom executables (by changing the value of the Executable setting in Run and Profile scheme actions), you can specify the target against which

to expand the environment variables and launch arguments. 7546808

Editing Nib Files

Xcode suggests key path completions in the bindings inspector as you type. To take advantage of this feature, specify the class of object being managed by your controller in the attributes inspector.

Xcode uses the project’s symbol index to generate the key path completions. 8176168

Editing Source Code

There’s an additional gesture to jump to a symbol definition in the source editor: holding down the Command key. When you hold down Command, Xcode represents the symbol under the pointer as a hyperlink; you can move the pointer between symbols until Xcode highlights the one you want to act on. You can then click the symbol to jump to its definition. Other modifies keys behave as expected. 8459719

Task Information and Alerts

The activity viewer presents more detailed information about scheme-related tasks, such as building a product. 7982481

Changes

Editing Nib Files

Hidden views are invisible in the Interface Builder canvas (they used to be partially visible in Interface Builder 3, part of Xcode 3).

To work with these views, select them in the jump bar or the outline view. 8059339

Building: xcodebuild The xcodebuild -activetarget option is no longer supported. 8361726

Resolved Issues

General

In General preferences, you can specify that Xcode ask you where to open a file you click or double-click while holding down an modifier key in a navigator. 8476034

Xcode automatically creates schemes for all targets in a project when you open an Xcode 3.x– based project. It doesn’t skip targets that other targets depend on.

You can delete or hide schemes you don’t need in the manage schemes dialog. 8016676

Setting General preferences > Build Location > “Shared subfolder” to an absolute path doesn’t generate an assertion failure when opening projects. 8368913

Editing Nib Files

Many performance problems with making connections are resolved. In particular, the performance of connecting to the First Responder has been drastically improved. 8280101

You can create an Interface Builder–to–source connection even the target source code is folded. 8472539

Editing Core Data Model Files

When you create NSManagedObject subclasses from entities in a Core Data data model, Xcode ask for confirmation before overwriting existing files. 8506607

Editing Source Code

Breakpoints and message bubbles appear in the source editor even when code is folded above them. 7192871

Compiling: LLVM 2.0 C++: Several bugs related to using blocks are fixed. 6182276

Analyzing OpenGL ES Performance API statistics in the OpenGL ES Analyzer instrument are computed correctly. 8549379

Help and Documentation Content

The list of help topics in a help book appears, as expected, when accessing help books in the documentation organizer. 8430699

New Issues

Comparing Versions of a File

After you create a branch and switch to it in the repositories organizer, using the commit dialog or the version editor causes an assertion failure.

Restart Xcode after creating a branch and switching to it. 8383245

Known Issues

General

Interface Builder files with explicit Xcode 3 file types open in the source editor instead of in Interface Builder.

Set the file type of the Interface Builder file in the Identity and Type inspector to “Default,” deselect it in the project navigator, and select it again. 8028406

The task log viewer is empty when you select the last build task of a project or workspace in the log navigator and the viewer is set to show only recent operations.

Set the task log viewer to show all operations. 8350930

Editing Nib Files

Xcode cannot edit Mac OS X–type Interface Builder documents comprised of objects from frameworks other than AppKit.

You can compile and run these documents, however. 7470836 Refactoring: Xcode does not refactor Cocoa bindings. 8423815

Searching

Search navigator: Xcode may crash in the replace preview dialog of the search navigator when all the found instances are selected and you click Replace. 8091532

Refactoring

Xcode does not create a snapshot of your workspace before performing a refactoring transformation.

Create manual snapshots before performing refactoring transformations. 7816256

Editing nib files: The Rename transformation may not work properly action methods in Interface Builder documents when the action’s target is the first responder or the method is declared in a category, protocol, or a superclass of the given class. 8500272

Source Control and Snapshots Xcode doesn’t recognize SCP-based URLs for Git repositories in the Repositories organizer.

Use the SSH-based URLs. For example, instead of git@example.com:/myrepositoryname.git use ssh://git@example.com/myrepositoryname.git. 8044145

Building Xcode doesn’t use a new build location after you change General preferences > Build Location. Close and reopen open projects and workspaces after changing the build location. 7965261

Help and Documentation Content

These help books are not listed on the Xcode Application Help page (Help > Xcode Application Help): Interface Builder Help, Task and Session Log Viewer Help, Symbol Navigator Help, and Xcode Concepts.

Search for these titles in the Help menu or in the search navigator in the documentation organizer. 8481951,8518802

About the Author

Mark Gurman's favorite gear