ホスト名の代わりに IP アドレスを使用して、シミュレーターの iOS アプリケーションにローカル サーバーと通信するように指示しようとすると、アプリは読み込み画面でハングし、サーバーからの応答を待機します。
私はObjective Cを初めて使用しますが、コードはリクエストを処理するAFNetowrkingフレームワークを使用しており、AFHTTPClientオブジェクトのIPアドレスに対してSCNetworkReachabilityFlagsプロパティが異なる方法で設定されています。
IP アドレスとホスト名の AFHTTPClient オブジェクトの次のプロパティは、デバッグ中にキャプチャされました。
<SCNetworkReachability 0xd26d8a0 [0x53b9ec8]>
{address = 127.0.0.1, flags = 0x00010002, if_index = 1}
<SCNetworkReachability 0xcf283f0 [0x53b9ec8]>
{name = localhost (server query active), flags = 0x80000000, if_index = 0}
AFHTTPClient.m クラス内の startMonitoringNetworkReachability メソッドには、IP アドレスに対してトリガーされる次の if ステートメントがありますが、それが問題かどうかはわかりません。
/* Network reachability monitoring does not establish a baseline for IP addresses as
it does for hostnames, so if the base URL host is an IP address, the initial
reachability callback is manually triggered.
*/
if (AFURLHostIsIPAddress(self.baseURL)) {
SCNetworkReachabilityFlags flags;
SCNetworkReachabilityGetFlags(self.networkReachability, &flags);
dispatch_async(dispatch_get_main_queue(), ^{
AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags);
callback(status);
});
}
私の質問は、問題の原因と、IP アドレスを baseURL として使用してサーバーに接続するにはどうすればよいかということです。