我已经子类化了一个类,它拥有一个 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/