我已经创建了一个类,它包含一个块属性,我需要扩展。
超类的属性:
@property (nonatomic, copy) id (^willMapDeserializedResponseBlock)(id deserializedResponseBody);
每次设置此块时,我都需要通过自己的代码/块来扩展块。
基本上这就是我想要在我的子类中做的事情:
[self setWillMapDeserializedResponseBlock:^id(id deserializedResponseBody) {
// original block
// do my own stuff
return deserializedResponseBody;
}];
我如何实现这样的事情? 我找到了answer类似的问题,但它对我没有帮助,可能是因为该块的返回值?
答案 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;
}