4

NSURLConnectionDelegateapple.developer.comサイトのクラスリファレンスを調べていました。connectionDidFinishLoadingそこで私は、IOSクラスには存在しないが、MACライブラリには存在するようないくつかの関数に気づきました。

次に、IOSアプリのXCODEでこれらの関数を使用しようとすると、オートコンプリートは完了しませんが、関数は期待どおりに機能します。

誰かがこれらがどのように機能するかを説明できますか?これはアプリをデプロイするときに問題を引き起こしますか?ありがとう!!

4

2 に答える 2

4

これは少し奇妙です。のドキュメントは次のようにNSURLConnectionDelegate述べています。

NSURLConnectionDelegateプロトコルは、NSURLConnectionオブジェクトのデリゲートによって実装されるオプションのメソッドを定義します。

オプションの有効な単語があります

ただし、NSURLConnectionクラスリファレンスには次のように書かれています。

NSURLConnectionのデリゲートメソッド(NSURLConnectionDelegateプロトコルで定義)を使用すると、オブジェクトはURL要求の非同期ロードに関する情報コールバックを受信できます。他のデリゲートメソッドは、デリゲートが非同期URLロードを実行するプロセスをカスタマイズできるようにする機能を提供します。これらのデリゲートメソッドは、関連付けられたNSURLConnectionオブジェクトの非同期ロード操作を開始したスレッドで呼び出されます。

これら2つは矛盾しているようです。

最後に、「URLローディングシステムプログラミングガイド」には次のように書かれています。

URLのコンテンツをダウンロードするには、アプリケーションは、少なくとも次のデリゲートメソッドを実装するデリゲートオブジェクトを提供する必要があります:connection:didReceiveResponse:、connection:didReceiveData:、connection:didFailWithError:、connectionDidFinishLoading:。

NSURLConnectionこれらのデリゲートメソッドがないとほとんど役に立たないので、これはあなたが期待することです。

ヘッダーファイルを見ると、必要なデリゲートメソッドをリストしてNSURLConnectionいるプロトコルがあるようです。NSURLConnectionDataDelegateただし、@optionalヘッダーにあるようにマークされています。それの定義によると、NSURLConnectionDataDelegate実装する必要がありますNSURLConnectionDelegate

プロトコルを実装するためにデリゲートクラスを宣言すると、 NSURLConnectionDataDelegateXcodeはデリゲートメソッドをオートコンプリートします。

これはすべて私には少し厄介な感じがします。Cocoa / Cocoa Touch APIは通常、これよりもはるかに優れています。

私は確かに、Appleがこれらのデリゲートメソッドを使用するためにアプリを拒否する可能性があるとはNSURLConnection思いません。

于 2012-07-06T03:31:20.377 に答える
1

APIに不整合が見つかった場合は、Black Pixelの友好的な人が説明しているように、RADARにバグレポートを提出する必要があることを忘れないでください: RADARまたはGTFO

于 2012-07-06T15:27:14.487 に答える