Assuming you're talking about trying to have a replacement block in a subclass that still calls the superclass block, you cannot insert a block into an existing block, but you can fake it like this:
// in MySubclass.h @property (nonatomic, copy) RequestSucceededBlock subclassSucceededBlock; // in MySubclass.m - (RequestSucceededBlock)succeededBlock { [return subclassSucceededBlock]; } - (void)setSucceededBlock:(RequestSucceededBlock)newSucceededBlock { // make sure this conforms to the definition of RequestSucceededBlock RequestSucceededBlock combinedBlock = ^{ dispatch_async(dispatch_get_current_queue(), newSucceededBlock); dispatch_async(dispatch_get_current_queue(), [super succeededBlock]); }; subclassSucceededBlock = combinedBlock; }
This is a bit strange, although b / c assumes that the superclass has a default block assigned to succeededBlock that you want to send. If your question has a different meaning, please specify and I will see if I can update it.
EDIT: added copy to iVar
source share