This code is unnecessary. Just set self.internalDelegate.proxyDelegate = delegate and never call [self setDelegate:_internalDelegate]; 

See comment in -init.