iOS 8 added many useful APIs, but I find many are hard to use while maintaining support for iOS 7.<p>For example:
- To share code between your app and your iOS 8 extensions, you want to put them in a shared framework, something which was just added in Xcode 6, and compatible only with iOS 8. So using shared code from iOS 7 means you'd have to keep copies of your source in the main app framework.<p>- Photos.framework is really great, but is completely different from Assets.framework, so building a photo app means writing your code twice. Yes, you can use Assets framework from iOS 8, but it's unclear how iCloud Photo Library will work with it (iOS 8.0 inadvertently removed "Camera Roll" from Assets framework, for example)<p>- Can't clean up your UIActionSheet, UIAlertView, UIPopoverController code with UIAlertController until you go iOS 8+<p>So iOS 8 moves a lot of things forward really nicely, and building an iOS 8-only app has been really great, but I feel, more so than before, that it's harder to maintain support for older iOS versions.<p>I was hoping iOS 8's adoption numbers would be rising faster than it did for iOS 7, so it'd be easier to justify dropping iOS 7 support sooner, but anecdotally it seems the large installation binary has made it hard to update 16GB devices.
This is the same as the jump from iOS 6 to iOS 7, except that was more UI code. It was difficult to support both and keep the correct look and feel between the apps without a lot of extra work, even more if you weren't using auto layout. The basic controls changed a lot and the change with the status bar still affects apps today.