ネットワークの接続状態を取得する方法

ASIHttpRequest が Reachability を利用していたので、存在は知っていたが ARC 版が無くて困ったので、メモ。

Reachability の ARC 対応版を公開している人がいるみたい。
あと、Reachability で通信状態を取得するという使い方は知っていたが、通信状態が変化した際にコールバックさせることもできるみたいなので、メモしておく。

何だかんだで、自分でも ARC のコード書くようになっちゃったなぁ~。あと、blocks とかも見なくちゃいけなしぃ~。GCD とかも見てる。私は特に必要がなければ、 NSOperation がいいなぁ~。(^^)

・参考サイト: TORQUES LABS Reachability:iOSでネット接続を確認する公式ライブラリ
・ソース公開: Reachability (iOS) ARCified — Gist

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// 通信状態が変化した際に通知されるように設定する
- (void)reachabilityStart
{
    curReachability_ = [Reachability reachabilityForInternetConnection];
    [curReachability_ startNotifier];
 
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(reachabilityChanged:)
                                                 name:kReachabilityChangedNotification
                                               object:nil];
}
 
- (void)reachabilityStop
{
    [curReachability_ stopNotifier];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"kReachabilityChangedNotification" object:nil];
}
 
// ネットワーク接続の状態が変化した際の処理
- (void)reachabilityChanged:(NSNotification*)note
{
    Reachability* curReach = [note object];
    NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
 
    NetworkStatus netStatus = [curReach currentReachabilityStatus];
    if (netStatus != NotReachable) {
        // 通信が再確保された際の処理
    }
}