面试题答案
一键面试- 设置NSOperation的执行优先级:
- 在Objective - C中,
NSOperation
有一个queuePriority
属性来设置执行优先级。queuePriority
是一个枚举类型,有以下几种优先级级别:NSOperationQueuePriorityVeryLow
:非常低的优先级。NSOperationQueuePriorityLow
:低优先级。NSOperationQueuePriorityNormal
:普通优先级(默认)。NSOperationQueuePriorityHigh
:高优先级。NSOperationQueuePriorityVeryHigh
:非常高的优先级。
- 示例代码:
- 在Objective - C中,
NSOperation *operation = [[NSBlockOperation alloc] init];
operation.queuePriority = NSOperationQueuePriorityHigh;
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperation:operation];
- 设置操作之间的依赖关系:
NSOperation
类提供了addDependency:
方法来设置依赖关系。一个操作可以依赖于一个或多个其他操作,只有当它所依赖的所有操作都完成后,该操作才会被添加到队列中执行。- 示例代码:
// 创建操作1
NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"Operation 1 is executing.");
}];
// 创建操作2
NSBlockOperation *operation2 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"Operation 2 is executing.");
}];
// 创建操作3,操作3依赖于操作1和操作2
NSBlockOperation *operation3 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"Operation 3 is executing.");
}];
[operation3 addDependency:operation1];
[operation3 addDependency:operation2];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
// 将操作添加到队列
[queue addOperation:operation1];
[queue addOperation:operation2];
[queue addOperation:operation3];
在上述示例中,operation3
会在operation1
和operation2
都完成后才开始执行。operation1
和operation2
之间没有依赖关系,它们可能会并发执行(取决于队列的设置和系统资源)。