gpt4 book ai didi

ios - 限制 NSURLConnection 数据速率? (带宽限制)

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:47:25 26 4
gpt4 key购买 nike

有没有办法限制 NSURLConnection 使用的带宽,或者我被迫使用 CFNetwork 方法?

最佳答案

是的,但它并不漂亮(它根据 this mailing list post 工作):

  • 在后台线程上启动 NSURLConnection(您必须设置运行循环)。
  • -connection:didReceiveData: 中休眠。
  • 以线程安全的方式将数据转发到主线程。

如果委托(delegate)是 UIViewController,第三个要点有点棘手,但如果 delegate__weak,类似这样的东西应该可以工作> 或 __unsafe_unretained:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[NSThread sleepForTimeInterval:...];
[self performSelectorOnMainThread:@selector(notifyDelegateDidReceiveData:) withObject:data waitUntilDone:NO];
}

-(void)notifyDelegateDidReceiveData:(NSData*)data
{
assert([NSThread isMainThread]);
[delegate myConnectionWrapper:self didReceiveData:data];
}

计算休眠多长时间并非易事,因为您可能希望考虑 TCP/IP 开销,但 [data length]+100 可能是正确的。

如果您有多个连接并且想要限制组合带宽,请将它们全部放在相同后台线程/运行循环中(参见-performSelector:onThread:withObject:waitUntilDone:)。

对于 CFNetwork 版本,我猜您已经阅读了 this post on Cocoa with Love .

关于ios - 限制 NSURLConnection 数据速率? (带宽限制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13314144/

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