13

この問題の適切な解決策が見つかりません。誰かがこのバグをクリアするのを手伝ってくれると思います。

概要: 3G 接続を使用してデバイスでアプリをテストすると、コンソールにこのバグ"purgeIdleCellConnections: found one to purge conn = 0x1ddde360"が複数回表示されるまでに、別の番号で発生します(0x1ddde360 or 0x21b98a60 or....)。時々ハングアップし、アプリケーションがクラッシュして停止します。アプリを開けません。削除して再度ビルドする必要があります。Wi-Fi を使用すると問題なく動作します。まったく問題ありません。

実際の結果: アプリで Web サービス (WSDL) を使用しています。アプリケーション自体を起動しているときに、複数の Web サービスを呼び出しています。このアプリは既に App Store (Promayarnlite) にありますが、そのファイルは IOS 5.1 SDK を使用してビルドされているため、正常に動作しました。Xcode を 4.5.1 および IOS 6 SDK に更新したので、App Store でアプリを更新したいと考えています。私はこの部分に苦労しています。

編集: A: 内部的に NSURLConnection は接続キャッシュを維持します。各キャッシュ エントリは、ホストへの永続的な HTTP 接続のセットを表します。新しいリクエストが到着すると、キャッシュ内のエントリでキューに入れられます。これは既存のエントリである場合もあれば、新しいエントリである場合もあり、さまざまな複雑な要因 (保護スペース、認証ステータス [認証方法の場合-はい] 、私はあなたを見ています、NTLM!--ステートフルです]、パイプライン、さまざまなキャッシュ制限など)。キャッシュ エントリに関連付けられた接続は、すべての要求の実行を終了すると、キャッシュ エントリのキューでさらに作業を探します。何も見つからない場合、接続はアイドル状態になります。接続が長時間アイドル状態の場合、

このキャッシュの実装は iOS 6 で変更されました。iOS 6 より前は、アイドル状態のキャッシュ エントリをパージするための単一のメカニズムがあり、Mac OS X と iOS では根本的に異なるタイムアウト (30 秒と 6 秒、iOS の値は古いバージョンの iOS では 3 秒)。iOS 6 では、アイドル状態のキャッシュ エントリを削除するメカニズムが 2 つになりました。1 つは WWAN 経由で実行されている接続に適用され、もう 1 つは他のすべての接続に適用されます。WWAN タイムアウトは従来の値 (3 秒) に戻り、他のすべての接続のタイムアウトは古い Mac OS X のデフォルト (30 秒) に引き上げられました。

表示されているログ メッセージは、WWAN 接続が削除されたときに生成されます。このログ メッセージは iOS 5.x には存在しなかったため、テストで表示されない理由が説明されています。ただし、基本的なメカニズムは、何らかの形で、iOS のすべてのバージョンに存在しています。

このメッセージは、原因というより症状である可能性が高くなります。具体的には、メッセージはアイドル接続にのみ適用されます。これは、何の役にも立たない永続的な HTTP 接続をクリーンアップする NSURLConnection にすぎません。ネットワークに問題がある場合は、接続がアイドル状態になっている理由を調査する必要があります。

4

2 に答える 2

2

これは、iOS 6.0.1 (iPhone 3GS) を実行しているデバイスで AdMob Mediation SDK を使用している場合に発生します。アプリケーション自体はサーバーに 100 以上の接続を行います (次のサーバー API でこの問題は修正されます) が、これらのコンソール ログ メッセージは、AdMob 接続がアクティブになった後にのみ表示されるようになりました。3GとWifi(10M接続)の両方。

おそらく、iOS は2 つの異なるネットワーク ライブラリ(この場合は AdMob)からネットワーク呼び出しを受け取ることに満足していないのでしょう。ただの偶然です。

アプリが完全に動かなくなることもあれば、目に見える問題がないこともあります。これを修正したいのですが、今のところ何も見つかりません...

于 2012-11-21T09:31:22.963 に答える
0

セルラー ネットワークに接続されたデバイスで、iOS 6.0 SDK からこのデバッグ メッセージが出力されるのを確認しました。タイミング的には、アプリで終了する「アクティブな」AJAX 呼び出しと相関していることがわかります。ただし、これは UIWebView で Web ページをレンダリングするときにのみ発生するため、何かを証明することは非常に困難です。メッセージが無害だとは思わない、と言っているだけです。接続の終了に過度に積極的な Apple フレームワークのバグを示している可能性があると思います。AJAX 呼び出しを行う UIWebView 内で実行されている JavaScript のインストルメンテーションを取得するのは難しいため、現時点ではすべて非常に投機的です。

于 2012-11-20T21:20:48.200 に答える