Si quiero devolver una matriz inmutable como esta + (NSArray *)ids
pero dentro de este método declaro NSMutableArray
porque quiero ordenarlo usando -sortUsingSelector:
.Método de retorno Objective-c que devuelve NSMutableArray en lugar del tipo de devolución NSArray declarado
Volviendo a este método funciona perfecto.
¿Pero está "bien" escribir código que declara que el método de retorno debe ser de un tipo y el tipo de realidad es otro?
Esto funciona porque
NSMutableArray
es una subclase deNSArray
?¿El valor de retorno real es
NSArray
oNSMutableArray
?
En cualquier idioma, el tipo de retorno real de una función puede ser un subtipo del tipo de retorno declarado como consecuencia del [principio de sustitución de Liskov] (http://en.wikipedia.org/wiki/Liskov_substitution_principle). – outis