Every year, before WWDC, there’s a lot of buzz. Transforming technologies are on our minds, and everyone is asking—what’s going to be the next big thing, as technology and change are seemingly synonymous.
Remarkably, however, many development tools remain the same. So, every year, we make a wish-list of changes we hope to see, and every year, since we are developers, we focus on tools that enable us to create better iOS applications. This year, however, we decided to do things slightly different. Instead of simply coming up with a new developer wish-list, we examined our wish-list from last year, and determined which changes occurred and which changes we’re still hoping for.
Last year we had a lot of wishes, and thankfully many of them were fulfilled, so let’s start by taking a looking at enhancements to Apple’s development tools. Here’s a list of Development Tool wishes that were fulfilled:
- wish #1. Dev Tools: better LLDB documentation. And yes, finally Apple has improved LLDB documentation inside Xcode and the developer portal.
- wish #3. Dev Tools: a working merging mechanism to solve NIB and Storyboard conflicts. There’s now a much better merging mechanism to solve NIB and Storyboard conflicts.
- wish #4. Dev Tools: live code injection. Live code injection can be performed with the
expressioncommand in LLDB. You should try it. It’s fantastic.
- wish #5. Dev Tools: live preview. The cool new debugging feature, Quick Look, gives developers a live preview of custom types directly in Xcode. Check here how it works.
- wish #9. Dev Tools: better certificate and provisioning profile management. Finally, Certificate and Provisioning Profile management has been streamlined, enabling developers to accomplish more within Xcode and making it easier to manage multiple identities.
MapKit is a vital tool for developers, so when Apple improves MapKit, we’re all quite happy. Here’s a list of our MapKit wishes that were fulfilled:
- wish #12. MapKit: routes. Updates to MapKit include Routes. Now, given two locations, I can obtain driving or walking directions between the two geographical points. Using overlay you can also draw them on the map, without having to launch the Maps app. This is an improvement for developers and users, who get a better experience when using our apps.
- wish #13. MapKit: automatic tiling. Automatic tiling has also been introduced, so now, when developing apps that need custom map textures on top of a map view, it’s easy to tile the normally large texture at different zoom levels and then load and render only the tiles corresponding to the visible region.
- wish #22. MapKit: OS X version. Additionally, MapKit was ported to OS X. Now developers can create uniform user experience applications with cross-platform location service solutions.
Passkit was also improved:
- wish #24. PassKit: the reader. Finally, a missing piece in the chain. The 2D barcode reader was introduced last year as part of AVFoundation, making PassKit integration easier.
- wish #16. UIKit. UI customization. In iOS 7, more UI elements can be customized.
- wish #17. UIKit. state preservation and restoration. Finally, better tools available also for XIB files.
Transformations take time and aren’t always complete, so some of our wishes remain partially fulfilled. Here’s a list of ongoing developer improvements.
- wish #8. Dev Tools: better integration of the project files with GIT. For sure Xcode 5 improved how version control is integrated. However, not every GIT tool is available from the Xcode UI. The Xcode file diff is in my opinion the best one on the market.
- wish #18. Core Animation: physics engine. I know UIKit dynamics is there and I know you can apply the dynamics to layers too, as I explained here, but I was looking for dynamics as part of Core Animation.
Unfulfilled wishes we want to see this year
Now, in order to see what hasn’t changed, let’s examine our wishes from last year that remain unsettled. Even without adding new wishes, this could be a complete wish list for this year:
- wish #2. Dev Tools: the ability to attach LLDB to a running app from the terminal. Developers still can’t attach LLDB to a running app from the terminal.
- wish #6. Dev Tools: Xcode plugins. Xcode plugins—that allow developers to extend Xcode’s functionalities—are still unavailable.
- wish #7. Dev Tools: custom Interface Builder objects. Custom Interface Builder objects—that make it possible to create and add a custom object to your IB library and re-use—remain illusive.
- wish #10. Dev Tools: instruments flags. Why do flags remained removed from Instruments?
- wish #11. Dev Tools: bug tracker app. Can we please have a simple tool for tracking bugs? All we need is something similar to Radar that stores bug reports created by an Xcode client.
- wish #14. MapKit: annotation views clustering. When I have too many annotation views on the map view, I can cluster these views at lower zoom levels and avoid completely covering the map, but this helpful feature has yet to become standard.
- wish #15. Networking: reachability. When I need to connect to the Internet I still have to to add Reachablity class to every app I develop. Can we please get this simple feature for free? Maybe in NSURL Connection?
- wish #19. AVFoundation: API reorganization. This would’ve been a huge change and I didn’t think I would see it at last year’s WWDC, but I can still hope. I use AVFoundation all the time, but I still don’t understand why it is such a peculiarly designed framework. For example, when I switch from the rear iPhone camera to the front one, why do I have to loop on all the available cameras and then exit the loop when I determine the camera I want? Or when rendering the camera frames on GL context, why do I need to write so much source code? Also, can we get an update of the examples? Many of them still use the manual reference count.
- wish #20. iCloud. Well, no further comments here. How about deprecating it and starting from the scratch? Or maybe we could get a service similar to Parse that allows you to build the functionality in Cocoa and push it to the server.
- wish #21. Siri: public API. It would be great to have a new Siri API not only in iOS, but also in Mac. This would allow us to easily integrate Siri into our applications.
- wish #23. OpenCL: iOS version. I am tired of using OpenGL to do image processing. You simply can’t implement every image algorithm with OpenGL. OpenCL would be the solution. Apple introduced OpenCL for Mac in OS X 10.6 Snow Leopard.
- wish #25. Core Image: custom filters. It’s time to get this feature. On the Mac, it’s already possible to build your own custom Core Image filters, so now let developers do it.
I take the opportunity to add a new wish to the list for Xcode: the possibility to build iOS frameworks without going through all those manual steps of building an aggregate and so on.