Xcode 9.4 has just been released and contrary to convention and expectation does not contain Swift 4.2. Maybe we should have suspected something, as the Xcode betas did not move in lockstep with the OS betas as usual. As the release notes show, the only notable change besides some bug fixes is support for ClassKit. Maybe next Mondays WWDC will be more exciting.
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…)
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.
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.
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.
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.
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?
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.
Some ‘news’ from a while back for Swift-people working with C libraries. Swift Tip: OpaquePointer vs. UnsafePointer explains the differences between these two ways of interacting with C-based APIs.
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
Its random-tidbit thursday:
• 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.
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.
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 😉
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.
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?
Check out the Swift Weekly Brief Issue #106 for updates from the Swift world in the last week. The most important things seem to be the announcement of Swift for TensorFlow and the approval of SE-0192: Non-Exhaustive Enums. It seems like the non-exhaustive enums will be part of the upcoming Swift 4.2 / Xcode 9.4.
Apple has seeded the first Xcode 9.4 beta. The release notes are short and don’t list anything interesting. Specifically Swift 4.2 will bring more conditional-conformance related changes as well as diagnostic directives as listed on the official Swift changelog . The release process for Swift 4.2 is already specified here.
- conditional conformance as defined here and explained here and here
- code size optimization as described on the official swift blog:
- brings improvements to target environment and build configuration checking explained by Erica Sadun
- for more Swift 4.1 changes have at the official swift blog entry or at the hackingwithswift article
- Slava Pestov explains the smaller behind-the scenes improvements in Swift 4.1 here
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
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!