Latest 0.2.0
License MIT
Frameworks SystemConfiguration

NPReachability is an evolution of Apple’s Reachability class that provides
information about the network status. It has a slightly simpler interface; more
concerned with the changes to the network status rather than monitoring a
particular URL.

As well as supporting the original’s Notification based monitoring, this class
supports both KVO and Blocks, so you can choose whichever way of handling
changes as your application requires.

This class is written as a singleton, so be sure to reference it as

NPReachability *reachability = [NPReachability sharedInstance];

Make sure you maintain a strong reference to at least one object of this class
or else ARC will clean it up underneach you.

Block support

Handlers are declared as

typedef void (^ReachabilityHandler)(NPReachability *curReach);

This takes the NPReachability object as a parameter. As originally written
this class passed the SCNetworkReachabilityFlags as a parameter, but you can
get that and more by messaging the object directly

You add blocks to be executed when the network status changes by using:

- (id)addHandler:(ReachabilityHandler)handler;

This returns an opaque object which you should use to remove the handler at the
appropriate time (in a dealloc, say) with:

- (void)removeHandler:(id)opaqueObject;

KVO support

Two properties can observed for changes to the network status:

@property (nonatomic, readonly, getter=isCurrentlyReachable) BOOL currentlyReachable;
@property (nonatomic, readonly) SCNetworkReachabilityFlags currentReachabilityFlags;


When the network status changes a NPReachabilityChangedNotification is sent
with the NPReachability instance as the notification object.


  • Xcode 5.0+ for ARC support, automatic synthesis and compatibility
    libraries. This might work for Xcode 4.2+, but I haven’t been able to test it.
  • The SystemConfiguration Framework should be added to your project.



Add the project as a submodule to your project’s repository and add the
NPReachability.h and NPReachability.m files to your project.


This is also available as a CocoaPod. If you’re a Podder, then you already know
what to do to add this to your project.

Direct files

Just add the NPReachability.h and NPReachability.m files to your
project. But I think any of the previous two methods are preferable to


Apple provided the Reachability Sample Code to demonstrate the use of their
Reachability class. To see how to use this Class instead have a look at
which shows the same project using NPReachability instead.

And finally…

Please use and improve! Patches accepted, or create an issue.

I’d love it if you could send me a note as to which app you’re using it with!

Latest podspec

    "name": "NPReachability",
    "version": "0.2.0",
    "summary": "Reachability without the suck.",
    "description": "Apple's Reachability example broadcasts changes in network connectivity throughnnotifications.  NPReachability also does this but also provides the options ofnusing KVO to monitor changes, or even to provide a block to be executed whennchanges happen.nnMonitoring is simpler; you're either connected or not. Testing for thenreachability of a particular URL is best done by actually trying to connect andndealing with the errors.nnApple's Reachability sample has been rewritten to use NPReachability, see thenreadme for details.n",
    "homepage": "",
    "license": "MIT",
    "authors": {
        "Abizer Nasir": "[email protected]"
    "source": {
        "git": "",
        "tag": "0.2.0"
    "frameworks": "SystemConfiguration",
    "source_files": "*.{h,m}",
    "requires_arc": true

Pin It on Pinterest

Share This