You need to declare your custom delegate as weak
@property (nonatomic, weak) id<MyCustomDelegateProtocol> delegate;
Otherwise you get a strong reference cycle
controller -> table view -> cell -> controller
n.b. weak
is specific to ARC, if you're not using ARC you need to use assign
, and make sure to nil it out yourself when you're done being its delegate.