Swift 3 documentation recommends using #available check for testing API availability in runtime. The arguments against using old weakly linked symbols approach are strong and go beyond Swift:
- typing selectors is error prone
- symbol could previously be a part of private API
The same arguments can also be applied to Objective-C, but official Objective-C documentation still recommends using weakly linked symbols checks.
Could you please clarify your recommendation for Objective-C. Is there a reason why developers should use different approach for Swift and Objective-C? Should Objective-C documentation be updated to use OS version checks? If so what would be your recommendation for code which is running on multiple platform (iOS, MacOS, WatchOS, etc…)?
Thanks!