【问题标题】:Runtime checking of Blocks and Queues in NSDictionary [duplicate]NSDictionary 中块和队列的运行时检查 [重复]
【发布时间】:2014-05-01 20:05:19
【问题描述】:

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

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 的类型。据我所知,块和队列实际上是objective-c 对象,但不符合<NSObject> 协议。那么,到底有没有办法呢?

提前致谢!

【问题讨论】:

    标签: objective-c objective-c-blocks


    【解决方案1】:

    您可以创建一个具有块/队列属性的类,以便于操作。尝试使用此类设置您的块和队列属性并将此对象添加到字典中。

    //Block class
    @interface myBlock : NSObject
    
    @property (assign) dispatch_block_t block;
    
    @end
    
    //Queue class
    @interface myQueue : NSObject
    
    @property (assign) dispatch_queue_t block;
    
    @end
    

    【讨论】:

      猜你喜欢
      • 2016-02-23
      • 1970-01-01
      • 1970-01-01
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多