objective-c - 调用 super block /扩展 block

标签 objective-c subclass objective-c-blocks

我已经子类化了一个类,它拥有一个 block 属性,我需要扩展。

父类(super class)的属性:

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

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

基本上这是我想在我的子类中做的:

[self setWillMapDeserializedResponseBlock:^id(id deserializedResponseBody) {

    // original block

    // do my own stuff 

    return deserializedResponseBody;
}];

如何实现这样的功能? 我找到了一个 answer一个类似的问题,但它没有帮助我,可能是因为 block 的返回值?

最佳答案

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

- (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;
}

关于objective-c - 调用 super block /扩展 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25075682/

相关文章:

ios - 不使用自动布局时出现 LayoutConstraints 错误

C# 将 XML 反序列化为 ChildClasses 列表

objective-c - 如何评论 Apple 对 Doxygen 的 block 扩展?

objective-c - 当 block 在初始化器中时捕获 block 中的变量

ios - Objective-C:如何为使用方法执行结果的方法提供完成 block

iphone - 指定初始化器

ios - GTM 设置中的 Firebase 和 Legacy iOS 意味着什么

ios - UIView中的圆两个角

java 。类的类型与对象

iphone - Core Data 将父类(super class)实例转换为子类实例?