0

このコードでは、アプリ内から到達可能なネットワークをポーリングします (" http://soxxx9.cafe24.com/event.php ")

   NSString * szURL =[NSString stringWithFormat:@"http://soxxx9.cafe24.com/event.php"];

   NSURL *url = [NSURL URLWithString:[szURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding ]];

   NSString *strData;
   while(1)
  {
    NSError *error = nil;
    strData = [NSString stringWithContentsOfURL:url
                                             encoding:NSUTF8StringEncoding
                                                error:&error];
    if(!error)
       break;
    //String data is not owned by me, no need to release
}

良い方法があれば教えてください。

4

2 に答える 2

1

このコードは、ネットワークが切断されているときに電力を大量に消費しているようです。到達できないものを何百万回もダウンロードしようとします...

Apple が提供する Reachability クラスを見てください ( http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html )。ARC 化されたバージョンは gitHub (たとえばhttps://github.com/tonymillion/Reachability ) にあります。

アイデアは、ネットワークの到達可能性に関する通知を登録することです。

だから、あなたのコードで:

  1. 必要な文字列を取得する前に、ネットワーク リソースの可用性を確認してください。
  2. これが利用可能な場合は、while(TRUE) なしでコードを使用してください
  3. コードでクライアント側=を取得する際に、文字列にエラーがないか確認してください

ネットワークが利用できない場合は、ネットワークに到達できないことをユーザーに通知し、到達可能性通知に登録して、たとえば再び到達可能になったらすぐに文字列を取得する必要があります。

于 2013-03-12T08:34:23.543 に答える
0

接続を処理するクラスが必要です。このようにして、何が起こっているのかをより細かく制御できます。は解決策です。ここでMKNetworkKit確認できます。

于 2012-05-11T09:45:00.270 に答える