建造或组成我自己的积木或小精灵



问题

objective-c有什么功能可以让我动态地编写自己的块或IMP吗?

我的意思是,让我把任意的代码片段链接到一个块中(然后执行imp_implementationWithBlock),或者直接得到一个组装的IMP

伪代码

(IMP) linkExistingBlock:LBExistingBlock With:^{
}

(IMP) linkExistingBlock:LBExistingBlock With:LBAnotherBlock

如果您有两个块,只需调用它们。此外,块是对象,可以放入NSArrays中。然后可以枚举数组并调用其内容。

for( dispatch_block_t block in arrayOfBlocks ){
    block();
}

[arrayOfBlocks enumerateObjectsUsingBlock:^(dispatch_block_t block, NSUInteger idx, BOOL *stop) {
        block();
}];

如果您有IMPs,那么这些只是函数指针——它们可以放入C数组,也可以封装在NSValues中并放入Cocoa数组。你只需要在打电话给他们之前先投他们的票。

对于您的示例方法签名:

- (dispatch_block_t)blockLinkingExistingBlock: (dispatch_block_t)firstBlock withBlock: (dispatch_block_t)secondBlock
{
    dispatch_block_t linker = ^{ firstBlock(); secondBlock();};
    // if compiling with ARC
    return linker;
    // otherwise
    // return [[linker copy] autorelease];
}

没有任何内置内容,但您可以创建一个块,通过调用它们来简单地执行一系列块。

相关内容

  • 没有找到相关文章

最新更新