到達可能性コードをアプリに組み込み、数か月間正常に機能しましたが、これまではiOS5デバイスでのみ使用していました。ただし、iOS4デバイスでは機能しません。
通知は次のように登録されます。
- (id) init
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChange:)
name:kReachabilityChangedNotification
object:nil];
...
- (void) appBecameActive
{
...
self.reachability = [Reachability reachabilityWithHostName:[url host]];
...
[self.reachability startNotifier];
stopNotifierはdeallocでのみ呼び出されます
問題は、到達可能性が変更されたときにReachabilityCallbackがコールバックされないことですが、iOS4ではなくiOS5で問題がない理由がわかりません。
コードのこの部分は、Appleのサンプルソースコードから変更されていません。
static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void *info) {
#pragma unused (target, flags)
NSCAssert(info != NULL, @"info was NULL in ReachabilityCallback");
NSCAssert([(__bridge id)info isKindOfClass:[Reachability class]], @"info was wrong class in ReachabilityCallback");
Reachability *noteObject = (__bridge Reachability *)info;
// Post a notification to notify the client that the network reachability changed.
[[NSNotificationCenter defaultCenter] postNotificationName:kReachabilityChangedNotification object:noteObject];
}
前述のように、iOS5デバイスで実行している場合、すべてが長い間正常に機能していますが、過去にiOS4に到達可能性コードを組み込んだ同様の問題に遭遇した人はいますか?