My argument against that is that you can explain the whole idea of the internal delegate as follows:

1. At -init time, we set the delegate of the class to our internal delegate and never allow it to change afterwards.
2. Getting and setting the delegate from the outside merely gets/sets internal delegate’s proxy delegate.

This is the exact description of the implementation I’ve suggested.