Xcode 6, iOS 8, Yosemite, Swift, and You

As you’ve probably heard by now, Apple release a whole lot of goodness for developers on Monday. As an Oxygene or RemObjects C# (or even a Data Abstract for Cocoa) developer, you’re probably asking yourself how these changes affect you.

Obviously, there’s a lot of things we cannot talk about yet — in part because it’s been less than two days since the new stuff was announced and we need to do a lot more research — and in part because many of the details are under NDA, and will remain so until Fall.

So, what can we say?

iOS 8 and OS X 10.10 Yosemite SDKs

The new SDKs import fine with the latest Gamma build of Elements that’s available to licensed users, and they will import fine with the imminent June release (based on that Gamma) that is coming later this week.

Why do you need a new build? Two reasons: We expected OS X 10.10 to not import with the previous version, simply because the internal integer versioning system Apple uses for OS X was reaching a conflict at 10.10 and our importer wouldn’t know how to calculate the right version code, until we looked at what Apple decided to do there. So that is broken “by design”. There were also a couple of small oddities in both 10.10 and 8.0 that our importer didn’t handle (basically, some Objective-C construct that was too weird for us to run into it sooner). Those had to be fixed.

In general (and moving forward) we aim for new Beta SDKs to import clean with current/previous Elements builds, w/o requiring action from us, of course.

Xcode 6

With the new SDKs imported, Oxygene and RemObjects C# work, as far as we can tell in our limited testing, fine against the new Xcode 6 command line tools, besides some issues with the Simulator APIs, which have changed pretty significantly in version 6.

If you run into any problems, remember that you can always change the version of Xcode that Elements sees back to Xcode 5.1, using the xcode-select tool, without needing to de-install Xcode 6. So you don’t need to hesitate about installing Xcode 6.

Of course we need to and will do more testing (especially on some of the areas with new features) to get Xcode 6 fully supported by the time it ships.

Swift

Of course the big announcement on Monday was Swift — Apple’s new programming language that’s destined to replace Objective-C in the long (or even short) run. It’s very exciting to see Apple take this step, which frankly I had been expecting – but not quite so soon, and not with such a drastic change in language style (Swift is *very different).

Swift opens up a lot of opportunities, but also challenges. On the one hand it “competes” with our Oxygene and RemObjects C# compilers for the spotlight of “more modern languages on Cocoa”, but on the other, it also opens developers up to the very idea that Cocoa does not have to mean Objective-C.

There’s also a lot of technical work for us to do. Swift does not compile to straight Cocoa objects, but brings its own object layer and APIs that Oxygene an RemObjects C# developers will want to interact with, and there’s work needed there — work that I can’t talk about in more detail, because much of Swift is covered by the Apple NDA until it is released. Of course we are fully committed to making this work, so that you can use code written in Swift as seamlessly from Elements as you can use the code written in Objective-C today.

If you’re a Data Abstract or RemObjects SDK for Cocoa developer, you’ll probably just want to use those libraries from Swift. This should just work out of the box, because Swift and Objective-C already mix and interact seamlessly in Xcode 6. Of course we’ll do a lot of testing on this front, see if maybe RO/DA can use some API revisions to make it work even better with Swift, and we’ll be providing project templates for Swift once Xcode 6 ships.

I will keep you updated as things develop. For now, I’ll let you get back to playing with the new toys!

Yours,
marc