0

私は多くのことを検索して試しましたが、私のアプリケーション (iOS 5 SDK を使用している) では、viewDidLoad メソッドで接続を初期化して開始するとき、または任意のボタンのクリック イベントでのみ、NSURLConnection デリゲート メソッドが呼び出されます。

しかし、JSON ファイルを解析した後に呼び出したいと思います。そして、JSON のすべてのレコードに対して新しい接続を作成します。

誰が何が起こっているのか教えてもらえますか? ios SDK 5 で何かが変更されました。

これが私のコードです:

-(void)getData:(NSString*)URL{
NSURLRequest *urlRequest = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:URL]];

shortURL = [NSString stringWithString:URL];


connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];

//NSAssert(connection!=nil, @"no connection", nil);
[connection start];

}

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response

{ // application specific stuff }

getData 関数は、NSObject から継承されたクラスに記述されています。そして、それはから呼び出されます

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

UITableView のメソッド。

これで私を助けてください。

4

1 に答える 1

2

JSON 解析コードがバックグラウンド スレッドで発生していると仮定すると、そのスレッドの NSRunLoop を作成する必要があります。

NSURLConnection クラスは単にそれ自体を実行ループに追加するだけです。何も存在しない場合、処理またはデリゲート メソッドは呼び出されません。

connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
[[NSRunLoop currentRunLoop] run];

注: run メソッドはブロックします

于 2012-02-10T18:04:06.163 に答える