I suppose this is largely a question about how iOS handles deprecating APIs.
I have an app that supports iOS 8.3+, and it worked fine through 9.3.x, but it breaks on iOS 10. When my app lets the user pick a contact, the error that I get is:
Terminating app due to uncaught exception 'CNPropertyNotFetchedException', reason: 'A property was not requested when contact was fetched.'
I found another post here which says that ABAddressBook APIs are deprecated and that I should use CNContactPickerViewController (and related ContactsUI classes) instead. I understand the answer that moving away from deprecated classes and to new & improved classes is the recommended solution. But why do I have to?
I thought that deprecated classes and methods are usually still supported in later versions. It makes no sense to me that my app would work fine on iOS 9.3 and then crash on 10.0, especially given that it compiles just fine (the deployment target is "8.3" and the base SDK is "Latest (10.0)".) Furthermore, some code still works (`ABAddressBookCreateWithOptions').
Finally, is there a good way to analyze the code and highlight all such use of deprecated APIs? My build output doesn't show any such warnings.