You should NOT use instancetype
. The obvious case here is that there is the immutable/mutable distinction -- A copy
of an NSMutableString
returns an NSString
which you should treat as immutable. In that case, the API does not return an instance of the same type as the receiver.
The other reason is that you should match the declaration's signature, as Josh Caswell noted (+1).
Of course, nothing is preventing you from declaring your own protocol with the semantics and signature you desire.