私はNSURLConnection
クラスを見ていましたが、URLへの同期または非同期接続を確立し、そのデータを取得するために使用できます。このクラスには多くの変更が加えられていますIOS 5と私は彼らが認証やダウンロードに関連するいくつかの正式なプロトコルを導入したのを見てきましたが、例えば、connection:didReceiveResponse:
メッセージ(それ以前にデリゲートに送られていて、いくつかのプロトコルで利用可能です。応答を受信するとすぐに、非同期接続を実装し、たとえばHTTPヘッダーを取得するにはどうすればよいですか?私は、NSURLConnection
とconnection:didReceiveResponse:
というメッセージを併用するよりも良い方法があると確信しています。stringWithContentsOfURL
のようなメソッドは常にコンテンツを同期して読み込みますか?アプリケーションで非同期ダウンロードを実装するために、非推奨のメソッドを避け、_http response received_mなどのイベントに反応するために使用するものは何ですか?可能であれば、バックグラウンドタスクで同期ダウンロードを起動しますか?NSURLConnectionメソッドはIOS5ではこれ以上使用できません
答えて
NSURLConnectionDelegate
は正式なプロトコル(以前のバージョンでは非公式プロトコル)になっています。このプロトコルでは、以下の(非廃止予定の)方法が宣言されている:
connection:didFailWithError:
connectionShouldUseCredentialStorage:
connection:willSendRequestForAuthenticationChallenge:
はまた、NSURLConnectionDelegate
に適合2つのサブプロトコルがあります
NSURLConnectionDataDelegate
は、データをメモリにロードするデリゲートに使用され、次のmetho私は確信しているそのうちのいくつかは、DS、あなたはおなじみ見つける:
connection:willSendRequest:redirectResponse:
connection:didReceiveResponse:
connection:didReceiveData:
connection:needNewBodyStream:
connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:
connection:willCacheResponse:
connectionDidFinishLoading:
NSURLConnectionDownloadDelegate
は、ディスクファイルに直接データを保存する代表団のために使用され、次のメソッドを宣言している:あなたが見ることができるように
connection:didWriteData:totalBytesWritten:expectedTotalBytes:
connectionDidResumeDownloading:totalBytesWritten:expectedTotalBytes:
connectionDidFinishDownloading:destinationURL:
以前のデリゲートをそのまま使用することができます。
詳細については、ローカルXcodeインストールのiOS 4.3 to iOS 5.0 API Differences documentおよびNSURLConnection.hを参照してください。新しいSDKバージョンがリリースされると、ヘッダーファイル内のドキュメントが開発者用ライブラリで利用可能なドキュメントよりも信頼性が高くなることは珍しくありません。後者が最新であるにはしばらく時間がかかります。
ありがとうございました...参照ドキュメントがまだ更新されていないので、APIの差分ドキュメントとヘッダーファイルは良いスタートポイントです。 ..)そのドキュメントは、通常あなたのアプリはNSURLConnectionDataDelegateプロトコルを実装してはならないと言っています...私が間違っているかどうか教えてください:ダウンロードプログレスバーの種類を実装する必要がある場合、doReceiveDataを使用して、データを少しダウンロードしたか、didReceiveDataがどのように動作し、いつ送信されたのか誤解しましたか? –
@Gianniはい、 ' - ... didReceiveData:'がデリゲートに送信され、データが受信されたことを通知します。これらのデータを保存するほかに、ダウンロードプログレスバーを更新するために使用することができます。 –
FYI、04/08/12現在、5.1 SDKのマニュアルにはNSURLConnectionDataDelegate(オンラインでもSDK内でもない)に関する完全なリファレンスはまだありません。 –
この同じ問題が発生しました。非同期リクエストの送信はブロックとNSOperationQueue
でより簡単になります。
+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler
これは、代理人が認証と障害の問題にのみ使用されるようになったことを意味します。
ありがとう、私は参照文書でそれを見つけることができませんでした、多分それはすぐに更新されます。 –
通常これは現在更新されています。ただし、この方法はiOS 4.3では使用できないため注意してください。まとめると、iOS 4.3とiOS 5.0との互換性を維持するには、両方の方法を実装する必要があります。 –
でも、私はhaventははNOそれはここ
上で利用されている必要がありますアップルのWebサイト
上のドキュメントを見つけました! Appleのライブラリを注意深く見れば、認証や障害の問題に限定されません。
NSConnectionクラスオブジェクトに+(void)sendAsynchronousRequest:queue:completionHandler:
を導入して以来、前にできるだけ多くのNSConnectionDelegate
方法を実行することができ、多くの事は今NSURLConnection
方法に多くの機能を追加するための新しい部屋を開く、「NSConnectionDataDelegate
」& NSConnectionDownloadDelegate
と呼ばれる正式なプロトコルで使用することができます。 (iOS5から)
だから私はそれが改善されていると考えています。
- 1. NSURLConnectionオブジェクトは解放できません。
- 2. iOS5のNSURLConnection
- 3. getWindow()メソッドは使用できません
- 4. Laravelメソッドは使用できません
- 5. EDMXはこれ以上EDMXではありませんか?
- 6. Eclipse Indigoでは、非アクティビティ上書きメソッドの@Overrideを使用できません。
- 7. POSTメソッドを使用することはできませんエラー
- 8. NSURLConnectionデリゲートはサーバーステータス401でdidReceiveAuthenticationChallengeメソッドを取得しません
- 9. これは静的コンテキストでは使用できません
- 10. POSTメソッドとGETメソッド - ラジオボタンは現在使用できません
- 11. bitbucketはこれ以上使用できません。あなたの接続は安全ではありません
- 12. 火災ベーストリガーはこれ以上サポートされませんか?
- 13. iOS5のタブバーをカスタマイズできません
- 14. ここではNSFetchRequest to-manyキーは使用できません
- 15. lldbエラー:ここでは変数は使用できません
- 16. "img"要素はここでは使用できません;
- 17. Mongoose付きExpress:5以上の増分はできません
- 18. XNAで四角以上の画像を描くことはできません
- 19. インターフェイスOnClickListenerは、私のonClickメソッドを使用できませんか?ここ
- 20. Elasticsearchで2つ以上のフィルタを使用することはできません
- 21. scikiで10個以上のコアを使用することはできませんlearn
- 22. ジオメトリマネージャグリッドを使用できません。これはすでにパック
- 23. clearInterval()メソッドを使用できません
- 24. mysqlndメソッドを使用できません
- 25. addChildメソッドを使用できません
- 26. "Office.context.document.customXmlParts.addAsync"メソッドを使用できません
- 27. UISegmentedControlのCAオーバーレイはiOS5で上書きされます
- 28. MS Access 2010:「これ以上データベースを開くことができません」
- 29. WebRTC websocket SSL証明書は動作しますが、それ以上は使用できません。 ERR_INSECURE_RESPONSE
- 30. これまでXCodeの8へのアップグレード以来、デバッガコンソールにCGPointMakeを使用することはできません
あなたの質問は複数の質問に分割する必要があります。あなたの質問の中に潜在的に5つの質問があります。私の答えは、私があなたの最大の問題であると認識していること、すなわちiOS 4.3で利用可能だった接続代理メソッドの明白な除去を扱っています。 –