Yes its the most important week of the year again for any apple developer. WWDC! And according to Apple’s Keynote now there are over 20 million of us!

Apple has announced a lot of stuff in their Keynote, i’m sure the whole internet is filled with coverage of that. Lets have a quick glance at whats actually important for developers:

  • macOS 10.14 and iOS 12 with new APIs. we are still digging through the developer documentation to figure out what actually changed under the hood and at an API-level, like i am sure many of you are doing right now too. this year its actually considerably harder to find out whats new because Apple has discontinued their old developer documentation which always contained super-handy release-notes documents and replaced it with a flashy all-new documentation thats actually quite useless. at this point we can say for certain that there have been few large changes in key frameworks like Foundation/AppKit (things kinda died down here around 10.6) and the focus has been on extending recently released frameworks like ARKit and Core ML as well as tvOS and CarPlay changes. Apart from that we got 4 new Frameworks to play with:
    • Natural Language‘ a framework for processing Natural Language, this fits nicely with Apple’s recent machine learning focus
    • iTunesLibrary‘ a framework for interacting with iTunes, which is quite welcome on macOS where the only way to interact with iTunes has always been the scripting bridge, which has barely been accepted on the Mac App Store. we’ve already filed a bug report about this framework
    • Network‘ an aptly named framework to implement low level TCP/UDP networking
    • AuthenticationServices‘, which if it will prevent iOS apps asking for passwords that only exist in the Keychain will be get all our thumbs up
  • a “brand new Mac App Store”. i am sure there is much excitement about that and the visual overhaul is certainly welcome for users and the addition of the SKStoreReviewController API is certainly welcome for developers but lets not forget 1.) it has taken Apple (a 950 billion dollar company) 7 years to deliver an update that looks like an intern could do in 2 months and 2.) the changes we really have been asking for have not even been mentioned although we developers have pledged over 600 apps to the cause
  • Xcode 10: finally they brought the cold-folding back and their new build system is enabled by default. I guess most Swift developers will be disappointed that this is based on Swift 4.2 and not on Swift 5.

Unless you’ve won the WWDC lottery, some information is still hard to come by, so we’ll post more as it becomes available.



objc.io guys release ‘App Architecture’ book

The amazing guys over at objc.io have done it again and published their new book about ‘App Architecture – iOS Application Patterns in Swift’. This is probably the most interesting book launch of 2018 for Apple Developers. They discuss and compare five major application design patterns: MVC, MVVM, MVC+ViewState, MAVB, and “The Elm Architecture”. Also, staying true to their domain name, they promise to keep the ObjC angle covered too, for guys like us that still refuse to switch to Swift. Feel free to browse our “offline library” – perhaps you find some more interesting books there. (more…)


AppCode 2018.2 in Beta, Kotlin/Native v0.7 released

The guys over at JetBrains have released a beta version of their upcoming AppCode 2018.2 IDE for ObjC & Swift with database support and inline-renaming for Swift, check out the release announcement here.

Also, there is a new version of their Kotlin/Native Plugin that allows to use Swift/ObjC from Kotlin and vice versa. Kotlin/Native is probably the most actively developed ‘Cocoa Bridge’ at the moment. You can find links to Kotlin/Native and dozens of other bridged or native languages for Cocoa on our languages-page in the resources section.


Swift SE-0054 Reimplementation of Implicitly Unwrapped Optionals

SE-0054 Abolish ImplicitlyUnwrappedOptional has been implemented in recent Swift snapshots and eliminates some inconsistencies in type checking. Head over to the https://swift.org/blog/iuo/ to learn more or listen to Episode 58 of ‘Swift Unwrapped’, which has been dedicated to this issue. Note that both the official Swift.org blog as well as the ‘Swift Unwrapped’ Podcast are listed in our Online Resources Page along with countless other valuable resources.


 Apple Developers form ‘Union’ to get Apple to implement free trials on the the (Mac) App Store

Good news, everyone! We don’t believe any developer is truly happy with the Mac & iOS App Store. Lets examine the problems:

• While the Sandbox is a good idea in principle, most non boring-document-editing apps can’t be squeezed into the Sandbox, at least not without some exceptions, which Apple disallows on their store.
• The 30/70% revenue split is probably not what you’d call ‘Fair’.
• Apple doesn’t like a try-before-you-buy model and explicitly forbids developers to mention existence of free demo versions on our homepages.

To be fair, some other issues like review times or the inability to respond to user-reviews have mostly been addressed.

Now, a group of developers has formed ‘The Developer’s Union’ and the first item on their agenda is to pressure Apple into allowing Free Trials on the (Mac) App Store. This would be awesome, as disgruntled people who bought by accident are a major cause of concern. So, we’ve already ‘pledged’ 14 apps to the cause.


Swift.org: Introducing Related Projects to Swift Forums

Apple ^H^H^H^H^H Swift.org has given some kind of official blessing to a number of Swift-related projects by hosting special sub-forums for these projects in the official Swift forums:

 
So, if you are into Swift, you should probably check out these ‘Blessed’ Swift Projects:

SwiftLint (code-style) as well as SwiftNIO (network-framework) and SwiftProtobuf (protobuf wrapper) are probably the ones of the most general interest.


Official Swift Forums

Again some news for the Swift-Community. This actually happened in January, but we are still catching up to the news that happened while we were preparing for the launch of ‘Apple-Developer.org’. The motivation for our site has been the lack of resources for Apple-Developers. And one of the best news regarding these resources (besides the launch of our site, obviously) has been the launch of the official Swift Forums back in January.
It seems that the void that the demise of Apple Developer Mailing-Lists has left slowly gets filled – finally some good news regarding the awful lack of resources for Apple Developers.
Just one question, what’s with the ObjC developers?


Swift Playgrounds 2.1

Apple invests a lot of energy in making Swift look like an easy-to-learn language, despite the fact that anyone already knowing C can learn ObjC in an afternoon, but struggle to fully comprehend Swift even after years of training.

The Swift Playgrounds is a great, visual way to get started with programming in general and Swift in particular for children of all ages.

Version 2.1 has been released but unfortunately there is still no Mac version. So perhaps we will never learn how to use Swift.



DotSwift 2018 Videos Online

Videos from the DotSwift 2018 in Paris are now online and there have been some interesting presentations! Check out the videos and bridge the gap until apple’s WWDC videos will be online – probably in June.

Upcoming conferences from our offline resources list:

  • UIKof May 13–16, 2018, Berlin
  • WWDC June 4–8 2018, San Jose (with additional conferences around the WWDC)
  • trySwift June 8 2018, San Jose
  • 360|iDev August 26–29 2018, Denver

Bug of the Week: NSWindow beginSheet: presents wrong sheet

Welcome to our ‘Bug of the Week’ special. We highlight bugs in Apple’s systems affecting developers that are of special importance or just unbelievably bad. Here is the first one:

Bug ID 36706596: NSWindow beginSheet:completionHandler: presents wrong sheet

This basically amounts to the fact that the -[NSWindow beginSheet:completionHandler:] API can present the wrong sheet, not the one you are passing in, but another sheet that was previously presented, which is quite insane. The issue is solved in 10.13 but still present in the most recent updates to prior releases.
Debugging this issue was a nightmare around here and cost us several days because the result is so unbelievable and we were searching for possibilities of our code being broken instead of ‘beginSheet’ just showing the wrong sheet.

So, if you are trying to end sheets presented with -[NSWindow beginSheet:completionHandler:] with +[NSApp endSheet:] instead of the new method -[NSWindow endSheet:] your users on older systems might be in for a surprise. Best search all of your codebases for ‘NSApp endSheet’ to be sure.

Got a showstopper bug to share or found something breaking in unbelievable ways in Apple’s systems? Comment below and we might select your entry for the next ‘Bug of the Week’ feature!


 Tidbits: Apple Releases new OS betas, Xcode moves to clangd, Swift Tip: In-Place Map

Its random-tidbit thursday:

• Apple has released the second betas of macOS 10.13.5 and iOS 11.4, but the release notes are still extraordinarily boring. We are still waiting for a new Xcode beta with Swift 4.2.

• Apple seems to be moving Xcode from using libclang to clangd. What could this possibly mean for developers? One the one hand, Apple’s commitment to improving ‘clangd’ could mean improved ObjC&Swift support in other IDEs using clangd, like VisualStudio Code. One the other hand, if Xcode gets support for the Language Server Protocol, it could become easier to add support for other languages to Xcode.

• The objc.io Swift Tip Of The Week explains us the benefits of using mutation in general and in-place map in particular – check it out.


Kotlin/Native Plugin for AppCode Released

Hot on the heels of the AppCode 2018.1 Release, JetBrains have published a plugin for their AppCode IDE that integrates with Kotlin/Native. Kotlin/Native allows completely interoperability between Kotlin on one hand and Swift or ObjC on the other hand, which obviously enables some interesting things for writing cross-platform apps. Kotlin/Native is now featured on our cocoa languages page along with all other languages that allow interoperability with Swift or ObjC.


 Rumour: Apple plans to unify iOS and macOS via ‘Marzipan’ and move from x86 to in-house ARM chips

Unlike the rest of the internet we see little point in endlessly talking about things that are just rumours and not facts.
However, if there is something behind all this, the impact for Mac developers would be enormous – as numerous sites have been reporting in the past few weeks, Apple may be planning to unify iOS and macOS via their ‘Marzipan’ project as well as move their line of Mac computers from Intel to in-house ARM chips.

While this is all speculation at this point, rumours of Apple moving their Macs to ARM have persisted for many years now and fit well with what Apple actually wants: thin devices with long battery life and a high-profit margin. A switch to in-house ARM chips would totally make sense on this front, enabling Apple to make even higher profits on some even more desirable devices. However, there are downsides. While ARM chips may be able to compete performance wise with the quite slow chips in the Macbook/Macbook Air notebooks, we doubt they could replace high-end iMac chips the chips in a hypothetical ‘Mac Pro’. While Apple could move just some models over to ARM, this would make the transition even more burdensome. The performance problem is made worse with the fact that one would undoubtedly need some kind of x86-emulation to run ‘legacy’ binaries. Apple already switched chip architectures twice, from 68k to PowerPC (mid 90s) and from PowerPC to x86 (late 00s) and this has always been very cumbersome for developers (needing to re-write all their apps) and users (putting up with slow binary-emulation). But in both of these cases, they actually migrated to a much faster platform, which made a clear gain visible to everyone, and made binary-emulation workable. If they now switch to a CPU-architecture that is actually slower, we see little reason to stay on the platform. Interestingly a move to ARM would be much easier if their development environment was based on a JIT, like Microsoft have long propagated with C#. The native-compilation model that served them very well to keep the iPhone ahead of the competition performance-wise, may now be a hindrance.

On the topic of ‘Marzipan’ we are even more sceptical. The good part here would be to finally have some Framework/API news for Mac developers. Cocoa has accumulated a lot of cruft over the decades, and while Apple took the chance to make come improvements on iOS with UIKit, they probably didn’t go far enough and never did make it back to the Mac. The pain is even bigger for Swift developers, the sometimes cumbersome integration with ‘legacy’ ObjC APIs is probably the biggest drawback of using Swift. We’ve been waiting for a ‘revolution’ or at least a larger evolution concerning Cocoa for years, and this ‘Marzipan’ could mean just that. However, the very idea of merging Mobile and Desktop interfaces on any kind of level strikes us as extraordinarily dumb. The futile attempt to merge something which does not belong together has cost Microsoft billions during their Windows 7 / Mobile escapades. The fact that Apple has thus far kept the Mac and iOS separate and each working as it should has been a major selling point versus competing devices that are confused about what they actually are. More concretely, we can’t imagine it being possible to create a GUI framework that actually works great to support both touch-based and mouse-based input as well as screen sizes ranging from 4 to 40 inch.

Disagree? Looking forward to totally rewriting your apps for ARM-based Macs based on a UIKit-gone-fat? Let us hear your thoughts in the comment section!

EDIT: Apr20: There may be hope after all. Indeed, premature rumourization is the root of all evil. But it keeps the internet alive 😉


AppCode 2018.1 Released

Over at JetBrains they have released AppCode 2018.1, which is probably the most important alternative IDE to Xcode. There are far too many improvements to list here, including some Swift 4.1 support and support for RxSwift, which is quite cool. AppCode looks very very convincing on the feature-front, but the interface is so ugly Windows-like and nothing like a proper Mac-app as far as look&feel is concerned, that we couldn’t bring ourselves to actually use it. Even for a Windows-app the UI is bad, they really need to hire someone with user interface design experience, or at least someone with a sense of taste. But if Xcode continues its recent deterioration (we nominate it for our ‘Bug of the week’ feature for silently destroying a XIB file during refactoring just yesterday), AppCode may be the only way to go.
AppCode is listed on our apps & tools page along with a few dozen other essential apps for mac&iOS developers.


Tip Of The Week: Swift Local Computed Variables by objc.io

The guys over at objc.io are posting Weekly Swift Tips on a clockwork schedule – this week they explain how ‘local computed properties‘ can be used to speed-up code where variables that can be expensive to compute are not used in all branches. This seems like one of the first things any optimising compiler should take care of (doing calculations only when they are actually needed), does anyone have any hard data on whether the Swift compiler really does not figure this out on its own? How about other languages and compilers?







macOS 10.13.4 Released with eGPU Support

macOS 10.13.4 has been released after a lengthy-beta test. The user-facing release notes are here and the developer release notes are here.

There seem to be little changes of interest to developers (except bug fixes), with the notable exception being eGPU support. Apple’s apparent reversal of their complete disregard of everything that requires a GPU could be a game-changer for developers in the Gaming, Cryptocurrency, VR, 3D, Pro and Video sectors. Now if they’d just update their stone-age OpenGL drivers and start supporting the cross-platform industry standard Vulcan.

One other interesting thing is that ‘iMessage in the Cloud’ was again dropped again just before the final release. Originally scheduled for iOS 11/macOS 10.13, ‘iMessage in the Cloud’ has been present in every OS beta release for the better part of a year now, but was always dropped in any official release. Is this a sign of Apple’s rumoured push of software-quality instead of releasing beta-quality stuff or just a sign that they are even less able to get their act together with anything software-related than in the already poor past few years?


Swift 4.1 Released

Swift 4.1 has been released standalone (for Linux and Mac) and as part of Xcode 9.3. New features include:


iOS 11.3 Released with ARKit 1.5

iOS 11.3 has been released with many changes including some headline useless stuff like ‘Animoji improvements’. Interesting changes for developers include:

  • Support for ‘ARKit 1.5’. While there has been a lot of hype regarding AR, we are still waiting for an AR-killer-app. Maybe AR really needs accompanying glasses for its breakthrough
  • Other notable changes include data privacy improvements, seemingly in preparation to comply with the EU’s General Data Protection Regulation. If you have a website or app you should take this as a call for action, so you don’t become liable come once the GDPR comes into effect on 25. May.

You can find more information in the developer-release notes but it seems there are mostly bug-fixes.


Xcode 9.3 Released with Swift 4.1

Xcode 9.3 has been released by Apple. Interesting changes from the release notes:

  • 32-bit support is dropped. This is about time, since macOS has only supported 64-bit Macs since 10.7 (2011), Apple hasn’t offered a 32-bit Mac since 2007 and there were only a handful of 32-bit Intel Macs ever sold to begin with. Makes one wonder why Apple ever bothered with 32-bit Intel anyway.
  • the new energy organizer shows information about your iOS apps using ‘too much’ energy for apps distributed on the (iOS) App Store and Testflight
  • The debugger on macOS now requires the entitlement com.apple.security.get-task-allow to attach to apps. Apple seems to move in a direction where macOS is locked-down and you can’t debug random processes anymore. We foresee a lot of pain for low-level developers and security researchers.
  • Code-folding is still only working rudimentary, making the Xcode 9 series quite unusable
  • A lot of improvements for code coverage and new tool for parsing code coverage output, xccov.
  • Full Swift 4.1 support. We are detailing the Swift 4.1 changes in a separate post

Generally, Xcode 9.3 brings larger changes than Xcode 9.2 (release notes here) and 9.1 (release notes here) that mainly saw bug-fixes.


Welcome to apple-developer.org

Hello World,

welcome to apple-developer.org!

According to Apple, there are over 16 million registered ‘Apple Developers’, programmers developing software for their platforms (macOS, iOS, watchOS, tvOS) and using their languages (Swift, ObjC) and technologies. However, there is a notable lack of centralised information for all these people!

Over at CoreCode we’ve been frustrated by the lack of online information concerning software development for Apple’s platforms over the past few decades.

Specifically there is a lack of information about news & resources:

  • News: There are more than a billon websites, but there is no single website that exhaustively covers news of interest to Mac & iOS developers. Yes, there is Apple’s News Site, but it only covers their own stuff. Apart from that, there is basically nothing. There is no way to stay up-to-date, unless you have a large collection of carefully researched sites that you visit regularly and a lot of developer-friends tipping you off about new things. We want to remedy this situation with our Apple-Developer News site. We’ll start by covering the things that have happened in the past few weeks to make up for our delayed launch. After that we aim to cover everything thats interesting for ‘Apple Developers’ basically in realtime. Of course your tips about news are welcome!
  • Resources: There are quite a few interesting things for ‘Apple Developers’ out there. Specifically crafted great apps, tools & services. Awesome libraries & frameworks. Insightful online resources, blogs & podcasts. Books and conferences. However, there is no single, easy way to find out about all that stuff. We are launching our Apple-Developer Resources site today, filled with over 350 hierarchically organised links to interesting resources. More to come in the following weeks, and we’re also looking forward to your suggestions for things to add.

Thats basically it: We are launching the apple-developer.org today with a lot of excellent resources in the Resources section. The News section will be filled over the next few days with recent items and then (hopefully) kept up-to-date with everything thats happening related to Mac- & iOS-developement.

If you have any feedback, don’t hesitate to contact us or leave your comment below!