gpt4 book ai didi

iphone - 如何控制 iPhone 上的网络事件指示器

转载 作者:行者123 更新时间:2023-12-03 19:09:47 26 4
gpt4 key购买 nike

我知道为了在状态栏上显示/隐藏颤动器,我可以使用

[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

但是我的程序从多个线程发送通信请求,我需要一个位置来控制是否应显示或隐藏 throbber。

我想到了一个集中式类,其中每个通信请求都会注册,并且该类将知道一个或多个请求当前是否正在传输字节,并将打开颤动器,否则关闭。

这是要走的路吗?为什么苹果不让 throbber 在联网时自动出现

最佳答案

尝试使用这样的东西:

static NSInteger __LoadingObjectsCount = 0;

@interface NSObject(LoadingObjects)

+ (void)startLoad;
+ (void)stopLoad;
+ (void)updateLoadCountWithDelta:(NSInteger)countDelta;

@end

@implementation NSObject(LoadingObjects)

+ (void)startLoad {
[self updateLoadCountWithDelta:1];
}

+ (void)stopLoad {
[self updateLoadCountWithDelta:-1];
}

+ (void)updateLoadCountWithDelta:(NSInteger)countDelta {
@synchronized(self) {
__LoadingObjectsCount += countDelta;
__LoadingObjectsCount = (__LoadingObjectsCount < 0) ? 0 : __LoadingObjectsCount ;

[UIApplication sharedApplication].networkActivityIndicatorVisible = __LoadingObjectsCount > 0;
}
}

更新:使其线程安全

关于iphone - 如何控制 iPhone 上的网络事件指示器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3628165/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com