Ios NSURLConnection异步线程连接闭包
我使用NSURLConnection在与主线程分离的线程中从internet获取一些数据: 我将其放入我的JSONViewController.h:Ios NSURLConnection异步线程连接闭包,ios,iphone,objective-c,nsurlconnection,Ios,Iphone,Objective C,Nsurlconnection,我使用NSURLConnection在与主线程分离的线程中从internet获取一些数据: 我将其放入我的JSONViewController.h: #import <UIKit/UIKit.h> @interface JSONViewController : UIViewController <NSURLConnectionDelegate> { BOOL firstTime; NSMutableData *_responseData; } @end 我
#import <UIKit/UIKit.h>
@interface JSONViewController : UIViewController <NSURLConnectionDelegate> {
BOOL firstTime;
NSMutableData *_responseData;
}
@end
我还实现了与NSURLConnection协议相关的功能:
#pragma mark NSURLConnection Delegate Methods
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
_responseData = [[NSMutableData alloc] init];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[_responseData appendData:data];
}
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection
willCacheResponse:(NSCachedURLResponse*)cachedResponse {
return nil;
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {}
一切正常。
问题是:在我得到结果并且应该完成连接之后,为什么我仍然在导航栏上方的载波字段附近看到这个小指示器?我应该手动停止连接吗
在您的代码中,您应该可以找到如下内容:
UIApplication* app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = YES;
将状态栏的活动指示器设置为“开”。
加载完成后,您需要再次将其关闭。通过以下方式实现:
UIApplication* app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = NO;
如果一次下载的文件不超过一个,则只需将这两行添加到
connectiondFinisLoading
和didFailWithError
方法实现中即可 在您的代码中,您应该可以找到如下内容:
UIApplication* app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = YES;
将状态栏的活动指示器设置为“开”。
加载完成后,您需要再次将其关闭。通过以下方式实现:
UIApplication* app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = NO;
如果一次下载的文件不超过一个,则只需将这两行添加到
connectiondFinisLoading
和didFailWithError
方法实现中即可 你可以用这条简单的线来隐藏它
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
你可以用这条简单的线把它隐藏起来
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
在“开始方法”中,将函数方法放在以下位置:
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
。。。最后,在connectionIDfinisLoading
和connectionIDFailWitherRor
中放置:
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
希望这有帮助 在开始方法中,放置函数方法:
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
。。。最后,在connectionIDfinisLoading
和connectionIDFailWitherRor
中放置:
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
希望这有帮助 我担心的是,这种联系仍在幕后运作。谢谢:)如果您收到对其中一个方法的调用,则肯定不是。理论上,您可以并行启动多个连接。我担心的是,这种联系仍在后台工作。谢谢:)如果您收到对其中一个方法的调用,则肯定不是。理论上,您可以并行启动多个连接。对于它们中的每一个,将调用其中一个方法。