Ios NSURLConnection异步线程连接闭包

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 我

我使用NSURLConnection在与主线程分离的线程中从internet获取一些数据: 我将其放入我的JSONViewController.h

#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;

希望这有帮助

我担心的是,这种联系仍在幕后运作。谢谢:)如果您收到对其中一个方法的调用,则肯定不是。理论上,您可以并行启动多个连接。我担心的是,这种联系仍在后台工作。谢谢:)如果您收到对其中一个方法的调用,则肯定不是。理论上,您可以并行启动多个连接。对于它们中的每一个,将调用其中一个方法。