MST

星途 面试题库

面试题:Objective-C中如何使用NSOperationQueue实现异步网络请求的简单并发控制

在Objective-C项目里,假设你要发起多个异步网络请求,简要描述如何利用NSOperationQueue来实现并发控制,使得同一时间最多有3个网络请求在执行,并给出关键代码示例。
30.3万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试
  1. 并发控制原理
    • NSOperationQueueNSOperation 的管理队列,可以控制操作的执行顺序和并发数量。
    • 通过设置 NSOperationQueuemaxConcurrentOperationCount 属性来限制同一时间执行的操作数量。
  2. 关键代码示例
// 创建一个操作队列
NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
// 设置最大并发数为3
operationQueue.maxConcurrentOperationCount = 3;

// 假设有三个网络请求,这里用NSBlockOperation模拟
NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{
    // 网络请求1的代码,例如使用AFNetworking等网络框架发起请求
    NSLog(@"Network request 1 is executing.");
}];
NSBlockOperation *operation2 = [NSBlockOperation blockOperationWithBlock:^{
    NSLog(@"Network request 2 is executing.");
}];
NSBlockOperation *operation3 = [NSBlockOperation blockOperationWithBlock:^{
    NSLog(@"Network request 3 is executing.");
}];
NSBlockOperation *operation4 = [NSBlockOperation blockOperationWithBlock:^{
    NSLog(@"Network request 4 is executing.");
}];
NSBlockOperation *operation5 = [NSBlockOperation blockOperationWithBlock:^{
    NSLog(@"Network request 5 is executing.");
}];

// 将操作添加到队列中
[operationQueue addOperation:operation1];
[operationQueue addOperation:operation2];
[operationQueue addOperation:operation3];
[operationQueue addOperation:operation4];
[operationQueue addOperation:operation5];

这样,NSOperationQueue 会保证同一时间最多有3个网络请求(这里用 NSBlockOperation 模拟)在执行。当有操作完成时,队列会自动启动下一个等待的操作。