有没有办法限制NSURLConnection使用的带宽,或者我被迫使用CFNetwork方法?
答案 0 :(得分:1)
是的,但它并不漂亮(根据this mailing list post运作):
-connection:didReceiveData:
。如果委托人是UIViewController
,那么第三个要点有点棘手,但如果delegate
为__weak
或__unsafe_unretained
,则此类内容应该有效:< / p>
- (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。