「http://」と入力せずにサーバーに接続する必要があります。ユーザーからサーバー名とポート番号だけを取得する必要があります。目的のCでHTTPリクエストを送信
生産コードで- (void)loadHostName:(NSString *)hostName onPort:(NSInteger)portNumber {
responseData = [[NSMutableData alloc] init];
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@:%i", hostName, portNumber]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection release];
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[responseData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[responseData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"Oh noes! %@", [error localizedDescription]);
[responseData release];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
// Do something with the data, like load it in a web view.
[webView loadData:responseData MIMEType:@"text/html" textEncodingName:@"utf-8" baseURL:nil];
[responseData release];
}
、あなたはキャッシュ要求、認証チャレンジを処理する必要があります:これで、私はその最も単純な形では
@Richardあなたがして完了したらnilにごアイバーズを設定しますそれらはいつも良いことですが、その例題をその質問に集中させておくために、私はそれをやめました。オートリリースすることは無意味です。 –
'responseData'変数は、要求の結果に応じて' connectionDidFinishLoading: 'または' connection:didFailWithError: 'のいずれかで最後にアクセスされます。これ以上のNSURLConnectionコールバックは存在しないので、何も変数に再度アクセスすることはありません。また、それをnilに設定しても何も得られません。それをオートレースするのと同じことです。これは、自動解放プールが、今すぐ実行するのではなく、後で解放することを意味します。どちらの場合も、変数の設定が完了しているので、メモリ管理を可能な限り緊密に保つことができます。 'dealloc'でも解放しないでください。 –
あなたは私が話しているケースに対処していません。これは生産的ではありません。削除する。 – Richard