iphonecocoa-touchnetwork-programmingreachabilityios3.0

Latest Reachability.m (Example code version 2.2) compatible with iOS 3.0?


Does anyone know if version 2.2 (the latest) of Apple's iOS 'Reachability' example code will run on iOS 3.0? I want to support iOS 3.0, and Reachability.h and .m is the first non framework code I'm using in my app. In my own code I usually read the docs for all methods I use, and use respondsToSelector: to implement methods that won't run on 3.0. When people use third party code, how do they confirm which iOS it supports without checking every method individually against the docs?

Alternatively, does anyone know how I can get my hands on the old version of the example code? (Reachability version 2.1 might help.)


Solution

  • I don't mean to snipe an answer from @Matt and @Martin, but I feel like this question deserves an answer for posterity. If they come back and post their comments as answers please feel free to accept them.

    Anyway, my own answer is that I would highly advise against using Apple sample projects directly in a production application, especially Reachability. Many of their examples are badly written and, as you've noticed, outdated. I've filed a lot of bugs against them without many results.

    That said, one other point is that you should really think twice about relying on Reachability for control logic. If you just want to notify the user when their connection changes or something, okay. But don't rely on what Reachability says to decide whether to try communicating with the network or not. It's often wrong about your network status. Just open up a connection, and if it succeeds great, otherwise you'll get an error response letting you know there's no connection.

    EDIT - Regarding your other question about how to tell what IOS a third party app supports. The answer is, unless they've documented it, you might not be able to. Best indicator is usually taking a look at the build target's "Base SDK" and "iOS Deployment Target" settings. Base SDK will be the latest iOS version they've built against, and Deployment Target will be the earliest iOS version they support.

    Cheers