There's a bit of flexibility on how you want to structure things, but the vast majority of the time, the delegate is held as an instance variable, and you just pass a message to it like you would any other object.
So, you might declare the instance variable
id <BigRedButtonDelegate> _delegate;
(where BigRedButtonDelegate is a protocol you define)
then, you just call make a call like:
[_delegate somebodyDidPressTheBigRedButton];