调用超级块/扩展块

时间:2014-08-01 08:10:01

标签: objective-c subclass objective-c-blocks

我已经创建了一个类,它包含一个块属性,我需要扩展。

超类的属性:

@property (nonatomic, copy) id (^willMapDeserializedResponseBlock)(id deserializedResponseBody);

每次设置此块时,我都需要通过自己的代码/块来扩展块。

基本上这就是我想要在我的子类中做的事情:

[self setWillMapDeserializedResponseBlock:^id(id deserializedResponseBody) {

    // original block

    // do my own stuff 

    return deserializedResponseBody;
}];

我如何实现这样的事情? 我找到了answer类似的问题,但它对我没有帮助,可能是因为该块的返回值?

1 个答案:

答案 0 :(得分:4)

不,您无法将代码添加到现有阻止,但您可以轻松地根据您链接的问题调整解决方案:

- (void)setWillMapDeserializedResponseBlock:(id(^)(id))willMapDeserializedResponseBlock
{
    id (^additionalCode)(id, id) = ^id (id deserializedResponseBody, id originalReturnVal){
        // Do your own stuff
        return whatever;
    };

    id (^newWillMapBlock)(id) = ^id (id deserializedResponseBody){
        id retVal = willMapDeserializedResponseBlock(deserializedResponseBody);
        return additionalCode(deserializedResponseBody, retVal);
    };

    _willMapDeserializedResponseBlock = newWillMapBlock;
}