Hasta donde yo sé, Objective-C no admite la sobrecarga de métodos. ¿Cuál puede ser la alternativa para esto en Objective-C? ¿O debería usar siempre un nombre de método diferente?
ios
objective-c
overloading
suse
fuente
fuente
Vale la pena mencionar que incluso si Objective-C no admite la sobrecarga de métodos , Clang + LLVM sí admite la sobrecarga de funciones para C. Aunque no es exactamente lo que está buscando, podría resultar útil en algunas situaciones (por ejemplo, cuando implementar una versión ligeramente pirateada (va en contra de la encapsulación) del patrón de diseño del visitante )
Aquí hay un ejemplo simple de cómo funciona la sobrecarga de funciones:
fuente
id
yisKindOfClass:
a su disposición, sin embargo, es una historia diferente ...id
yisKindOfClass:
cubro los escenarios más prácticos. Una razón por la que podría preferir la sobrecarga es la selección automática del tipo más específico atendido, que incurriría en una pequeña sobrecarga para mantener con una verificación de tipo explícita.David tiene razón en que el método de sobrecarga no es compatible con Objective-C. Es similar a PHP en ese sentido. Como él también señala, es una práctica común definir dos o más métodos con diferentes firmas en la forma en que ejemplifica. Sin embargo, también es posible crear un método usando el tipo "id". A través del tipo "id", puede enviar cualquier objeto (y cualquier primitiva que use la clase NSNumber) al método y luego desde el propio método puede probar su tipo y lanzar la excepción apropiada si es necesario. Aunque esto tiene un impacto menor en el rendimiento, lo más probable es que sea nominal o insignificante a menos que esté procesando grandes cantidades de datos.
Este también es un lugar hermoso para implementar un protocolo para imponer el tipo de objeto, que se puede hacer así:
fuente