Nar*_*kat 0 objective-c nsurlconnection
在我的应用程序中,我想使用NSURLConnection该类.那么请告诉我如何使用这个?这包含了很多委托方法,请告诉我如何使用它们?
sEl*_*yan 12
使用启动连接
self.responseData = [NSMutableData data];
NSURL *url = [NSURL URLWithString:@"http://sampleurl/"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection autorelease];
Run Code Online (Sandbox Code Playgroud)
并且您可以在connectionDidFinishLoading委托方法中捕获响应
#pragma mark - NSURLConnection Delegate Methods
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[self.responseData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[self.responseData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"Connection failed: %@", [error description]);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
//Getting your response string
NSString *responseString = [[NSString alloc] initWithData:self.responseData encoding:NSUTF8StringEncoding];
self.responseData = nil;
}
Run Code Online (Sandbox Code Playgroud)
为你的内存泄漏问题
在接口文件中声明响应数据
NSMutableData *_responseData;
Run Code Online (Sandbox Code Playgroud)
财产如下
@property (nonatomic, retain) NSMutableData *responseData;
Run Code Online (Sandbox Code Playgroud)
并合成它
@synthesize responseData = _responseData;
Run Code Online (Sandbox Code Playgroud)
不要在任何地方发布它(我们使用方便的构造函数进行分配).我们已经在connectionDidFinishLoading方法中将其设置为nil.
在iOS 5和OS X 10.7或更高版本中,您可以使用以下方法异步加载数据:
NSURL *url = [NSURL URLWithString:@"http://sampleurl/"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue]
completionHandler: ^(NSURLResponse * response, NSData * data, NSError * error) {
NSHTTPURLResponse * httpResponse = (NSHTTPURLResponse*)response;
if(httpResponse.statusCode == 200) {
//your code to handle the data
}
}
];
Run Code Online (Sandbox Code Playgroud)
或者,如果您想同步执行操作(如果正在加载大数据,因为它会挂起应用程序,则不建议这样做)(在OS X 10.2+和iOS 2.0+中可用)
NSURL *url = [NSURL URLWithString:@"http://sampleurl/"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSURLResponse * response;
NSError * error;
NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11220 次 |
| 最近记录: |