27th Sept was the decided date to upload a Swift2.2 app to the appstore. iOS10 and XCode 8 got released on Sept 13. iOS10 devices can be detected and debugged only on XCode8 ( There are some hacks out there on how to detect iOS10 devices on XCode7 also) . When we had played with the Beta bits the app was giving us some issues during migration . We converted a branch of the app to Swift3.0 using the auto-migrator and left it at that. We had decided to wait for the release so we don’t waste precious dev cycles.
Post XCode 8 release we decided to give it a spin so that we can effectively support iOS10 devices. After taking close to 2-3 hours to “verify” xCode 8 opened. We took our “auto-migrated” branch and tried to build it. The compiler hung on us numerous time and started eating memory upto 80GB memory. Many hours later we were close to panic and no-where close to a solution.
After reading a bit more we understood why the compiler is hanging on us.Reading this post helped us understand what is going wrong and how we can help the compiler by sorting by compile times and fixing the Type Inference issues that the compiler gets hung on again and again. But still the number of changes we were having to make to our app was too many for comfort so close to release and we felt we were alteast 2.5 weeks away from getting a stable and tested build for Swift 3.0 app.
Looking for alternate paths we saw that XCode8.0 also comes with Swift 2.3 and here is what it says “The version of Swift 2 (2.3) used in Xcode 8 is very close to the version used in Xcode 7.3.1”. We also read about Swift2.3 here and figured this is meant for teams like us which are well into the development cycle. We decided to upgrade to Swift 2.3 immediately , upload the app and then move to Swift3.0 post release.
The team had some questions on why we didn’t just upload a Swift2.2 app which can easily run on iOS10 devices anyway. There was no wrong or right path and the selected one will vary from one project/timing to another . What is important is that we make an informed decision and are aware of the pros and cons of various approached. Here is how we decided.
|
Release a Swift2.2 app on the AppStore |
Convert to Swift2.3 and release |
Convert to Swift 3 and release |
Pros |
|
|
|
Cons |
|
|
|
Selected Path |
![]() |
Are you in a similar dilemma? Whats your decision matrix??
Team Cennest!