2

コンピューターからイーサネットケーブルを切断するとき、またはイーサネットをオフにしたときに問題が発生しました。この場合、一部のエントリが存在せず、アプリがクラッシュします。だから私はCFDictionaryContainsKeyを防ぐ方法を見つけようとしましたが、これはエラーを防ぎません。osx 10.6 よりも低いバージョンでも動作する回避策を知っている人はいますか?

- (NSString *)checkNetworkInterface
{
    SCDynamicStoreRef ds = SCDynamicStoreCreate(kCFAllocatorDefault, CFSTR("myapp"), NULL, NULL);
    CFDictionaryRef dr = SCDynamicStoreCopyValue(ds, CFSTR("State:/Network/Global/IPv4"));
    Boolean ck = CFDictionaryContainsKey( dr, CFSTR("PrimaryInterface"));
    NSString *interfaceString;
    if (ck) {
        CFStringRef interface = CFDictionaryGetValue(dr, CFSTR("PrimaryInterface"));
        interfaceString = [NSString stringWithString:( NSString *)interface ];
    } else {
        interfaceString = [NSString stringWithString:@"" ];
    }
    CFRelease(dr);
    CFRelease(ds);
    return interfaceString;
}

「State:/Network/Global/IPv4」が存在しない場合、アプリがクラッシュします:(

4

2 に答える 2