如何在 nsarray 中存储 dispatch_queue_t

How to store dispatch_queue_t in nsarray

这里我有一堆dispatch_queue_t,我想用一个NSArray来组织它们。但据我所知,没有这样的 API 可以这样做。那么我该如何实现呢?

NSArray 不可变。您必须使用 NSMutableArray,即 NSArray 的子类来添加对象。

而且,从 iOS 6.0 SDK 和 Mac OS X 10.8 SDK 开始,Dispatch Queue 被声明为 Objective-C 类型。因此,您可以将 Dispatch Queue 对象用作 Objective-C 对象。

@import Foundation;

int main()
{
    NSMutableArray *array = [[NSMutableArray alloc] init];

    dispatch_queue_t q = dispatch_get_global_queue(0, 0);
    NSLog(@"       q=%@", q);

    [array addObject:q];

    NSLog(@"array[0]=%@", array[0]);

    return 0;
}

结果:

       q=<OS_dispatch_queue_root: com.apple.root.default-qos[0x7fff79749b40]>
array[0]=<OS_dispatch_queue_root: com.apple.root.default-qos[0x7fff79749b40]>