NSDictionary中的块和队列的运行时检查

4

我有一个存储块和队列的字典数组。在某些方法之后,我需要执行它。

for (NSDictionary * dict in self.arrayOfBlocksAndQueues) {
    if (!dict[@"block"] || !dict[@"queue"]) {
        continue;
    }
    dispatch_block_t block = dict[@"block"];
    dispatch_async(dict[@"queue"], ^{
        block();
    });
}

所以我的问题是,如何在运行时检查dict[@"block"]dict[@"queue"]是否恰好是我期望的类型?我有一个 typedef void(^handler)();,我需要确保dict[@"block”]handler类型。据我所知,blocks和queues实际上是objective-c对象,但不符合<NSObject>协议。那么,有没有办法做到这一点呢?
提前感谢!
1个回答

0
你可以创建一个带有块/队列属性的类,以便于操作。尝试使用这个类设置你的块和队列属性,并将这些对象添加到字典中。
//Block class
@interface myBlock : NSObject

@property (assign) dispatch_block_t block;

@end

//Queue class
@interface myQueue : NSObject

@property (assign) dispatch_queue_t block;

@end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接