私は現在このコードを使用しています
NSHost *host = [NSHost hostWithAddress:hostname];
if (host == nil) {
host = [NSHost hostWithName:hostname];
if (host == nil) {
[self setMessage:@"Invalid IP address or hostname:"];
return;
}
}
作業中のネットワークアプリのIPアドレスを取得するためですが、NSHostが拒否されるプライベートAPIであることを認識しています。NSHostを使用せずに同じ結果を生成するためにこのコードを操作するのを手伝ってくれる人はいますか?どこから始めたらいいのかよくわかりません。
編集:
以下のほぼ完璧に見える提案に従って、上記のコードの代わりにこのコードをアプリに追加しました
Boolean result;
CFHostRef hostRef;
CFArrayRef addresses;
NSString *hostname = @"www.apple.com";
hostRef = CFHostCreateWithName(kCFAllocatorDefault, (CFStringRef)hostname);
if (hostRef) {
result = CFHostStartInfoResolution(hostRef, kCFHostAddresses, NULL); // pass an error instead of NULL here to find out why it failed
if (result == TRUE) {
addresses = CFHostGetAddressing(hostRef, &result);
}
}
if (result == TRUE) {
NSLog(@"Resolved");
} else {
NSLog(@"Not resolved");
}
4行目を削除しましたが(すでに他の場所からこの情報を入手しているため)、CFHostRefが宣言されていないことに基づいてエラーが発生します。どうすれば解決できますか?他のエラーはその後hostRefを見ることができないことにのみ基づいているので、それは私の唯一の大きなハードルのようです。編集:kCFHostAddressesも宣言されていないことをスクラッチします。