これを行うには、もっと良い方法があります。あなたがやろうとしていることの問題は、それが同期的であることです。つまり、アプリはこのアクションが完了するまで待ってから、他のことを行う必要があります。NSURLConnection
andを使用してこれを非同期呼び出しにし、NSURLRequests
デリゲートを設定することを検討することをお勧めします。
セットアップと管理が比較的簡単で、アプリの実行が何百万倍もスムーズになります。
家に帰ったら、少し後でこれを行うためのサンプルコードを投稿します。
アップデート
まず、これらの接続を呼び出すクラスは、インターフェイス ファイル内の接続のデリゲートである必要があります。たとえば、次のようになります。
ViewController.h
@interface ViewController: UIViewController <NSURLConnectionDelegate, NSURLConnectionDataDelegate> {
NSMutableData *pageData;
NSURLConnection *pageConnection;
}
次に、実装で必要な変数を作成/初期化する必要があります
ViewController.m
-(void) viewDidLoad {
pageData = [[NSMutableData alloc] init];
NSURLRequest *pageRequest= [[NSURLRequest alloc] initWithURL:pageURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:4];
pageConnection = [[NSURLConnection alloc] initWithRequest:pageRequestdelegate:self];
}
次に、データが取得されるときに呼び出されるデリゲート関数も必要です。
-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
if (connection == pageConnection) {
[pageData appendData:data];
}
}
-(void) connectionDidFinishLoading:(NSURLConnection *)connection {
if (connection == pageConnection) {
// Do whatever you need to do with the data
}
}
-(void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
if (connection == pageConnection) {
// Do something since the connection failed
}
}
もちろん、この例では読み込まれる URL は 1 つだけですが、必要な数の URL を作成できます。NSURLConnections
もちろん、受信したデータをどこに置くべきか、失敗した場合や接続が正常に完了した場合にどのようなアクションを取るべきかを知るために、必要なものすべてを追跡する必要がありますが、それは難しい拡張ではありません私が与えたものから。
明らかなエラーや何かが機能しない場合は、お知らせください。