A new year and a new version of Xcode 4. This of course means that it's time for me to drop everything and try to find out everything that's changed. Thankfully (for me at least), this is a relatively small update feature wise. I've been seeing two different responses to 4.3. Half of people seem to be experiencing a lot of crashes, but the other half seem to be seeing major performance improvements. I will be honest in admitting that I haven't really noticed either, but then again I'm still sure I have a special "more stable" build of Xcode that few others have. But besides that, what else has changed?
/Developer is no more
Since Xcode appeared on the Mac App Store, it has been a pain to update. The reason being that the App Store downloaded an installer, and you had to remember to run that installer afterwards. To solve this problem Apple have turned Xcode into a self contained application. Rather than Xcode residing in /Developer, what was /Developer now resides within Xcode.
This does raise an interesting question: where are all the other developer tools? The most commonly used are included in Xcode. Instruments, File Merge, Application Loader, Icon Composer and Open GL ES Performance Detective can all be accessed from Xcode's application menu. The rest of the developers tools are available via connect.apple.com in various packages. This should mean that the download for Xcode is lighter, though you won't be guaranteed to get the most up-to-date versions of all the tools in one download.
Command Line Tools
As there is now no installer for Xcode, this means that things such as various command line tools won't be installed. You can still get them though through the Command Line Tools component, accessible via the Downloads Preferences pane. They can also be downloaded independently if you want to set up a basic development environment without the need for Xcode. To find out more check out Kenneth Reitz's blog post.
Update: User Defined Runtime Attributes
Mac OS X 10.6 introduced the concept of User Defined Runtime Attributes in a NIB. In a nutshell, these allowed you to specify some key path/value pairs that would be set on an object in a NIB when it is loaded. This allowed you to customise properties of views that weren't available in their inspector without having to resort to code, which is very useful for custom views. Unfortunately this was only limited to boolean, string, number and nil values.
I missed this when I first wrote my Xcode 4.3 review, but Apple has made some very significant additions. You can now create attributes for points, sizes, rects, ranges and colours. This gives a much wider variety of options for customising objects. I'd still love to see support for fonts, arrays and dictionaries but it is a major improvement, especially the addition of support for colours. Unfortunately your application must run on at least Mac OS X 10.7 or iOS 5.
There isn't really much else major new, but there are quite a few smaller changes:
- The "Convert to ARC" refactoring tool now supports conversion of garbage collected code.
- A "Jump to Instruction Pointer" menu item that moves the text cursor to the line the instruction pointer is at.
- The entitlements UI has been re-arranged a bit to make the file system access options clearer.
- Mac NIBs now have controls on the canvas to create new autolayout constraints.
- Autolayout constraints can now have negative constant values.
- You can now modify the default class prefix setting in the file inspector
- Archiving lets you export an app using a Developer ID, for use with the new GateKeeper in Mountain Lion
Update: It seems I forgot a few improvements in my initial review. I've added these below.
- Code completion now works within macros (OCUnit macros now work in Xcode 4.3.1).
- Creating new groups starts immediately editing the name.
- LLDB is now the default debugger.
Xcode 4.3 more like a maintenance release than anything, tidying things up without the need to add new OS X or iOS specific features. There's not really much more to say than that, so I shall bid you farewell until the next release of Xcode.