¿Hay alguna manera de averiguar, en tiempo de ejecución, si un método dado es de tipo variable? Algo así como method_getTypeEncoding()
; eso no me dirá si un método acepta una cantidad variable de argumentos. ¿O tal vez hay un truco para decirlo?Determinar si un método de Objective-C es variadic durante el tiempo de ejecución
5
A
Respuesta
6
El comentario de Robert es correcto. Considere:
@interface Boogity
@end
@implementation Boogity
- (void)methodWithOneIntArg:(int)a {;}
- (void)variadicMethodWithIDSentinel:(id)a, ... {;}
@end
Correr strings
en el binario resultante produce (también había la acción main()
):
strings asdfasdfasdf
Boogity
methodWithOneIntArg:
variadicMethodWithIDSentinel:
[email protected]:8i16
[email protected]:[email protected]
Hello, World!
Si cambio el método variadic para ser declarado como - (void)variadicMethodWithIDSentinel:(int)a, ...
, la salida strings
se convierte en:
Boogity
methodWithOneIntArg:
variadicMethodWithIDSentinel:
[email protected]:8i16
Hello, World!
Así que no, no hay forma de saberlo.
Cuestiones relacionadas
- 1. Comprueba si un evento dado está suscrito, durante el tiempo de ejecución, usando la reflexión
- 2. Determine el sistema operativo durante el tiempo de ejecución
- 3. ¿es posible anular un método en tiempo de ejecución?
- 4. Determinar si $ .ajax error es un tiempo de espera
- 5. XNA Change Game Service dinámicamente durante el tiempo de ejecución
- 6. Android buscar recurso por id durante el tiempo de ejecución
- 7. ¿Qué es el tiempo de ejecución moderno?
- 8. ¿Es posible usar las características de tiempo de ejecución de Objective-C para determinar de dónde se llamó un método?
- 9. ¿Cómo puedo determinar si se implementa un método abstracto?
- 10. Cómo bloquear la orientación durante el tiempo de ejecución
- 11. ¿Cómo puedo determinar si un método es un ejemplo genérico de un método genérico
- 12. ¿Es posible cambiar el valor de una variable durante el tiempo de ejecución?
- 13. Crear una clase durante el tiempo de ejecución
- 14. tiempo de ejecución determinar el tipo para C++
- 15. modificar un método/función en el tiempo de ejecución
- 16. ¿Cuál es la mejor manera de unir dos objetos durante el tiempo de ejecución usando C#?
- 17. método de llamada en tiempo de ejecución
- 18. Resalte elementos en WebDriver durante el tiempo de ejecución
- 19. ¿Cómo determinar si un tipo es un tipo de colección?
- 20. ¿Cómo puedo determinar si existe una función Perl en el tiempo de ejecución?
- 21. ¿Es posible cambiar dinámicamente el espacio de nombres a ServiceContract durante el tiempo de ejecución?
- 22. Método de fuerza ejecutado durante el intervalo de tiempo especificado
- 23. ¿Cuál es la mejor forma de obtener la ruta del ejecutable durante el tiempo de ejecución?
- 24. ¿Es posible crear una función de forma dinámica durante el tiempo de ejecución en C++?
- 25. ¿Cómo accedo a un valor de configuración de Rails durante el tiempo de ejecución?
- 26. ¿Qué es una forma de volver a cargar scripts lua durante el tiempo de ejecución?
- 27. Determinar si un archivo es un duplicado
- 28. Reemplazar el comentario de Java con el registro durante o antes del tiempo de ejecución
- 29. ¿Determinar si el valor de JavaScript es un "número entero"?
- 30. Reemplazar el método Property Setter en tiempo de ejecución
¿Puede explicarnos un poco más en qué contexto desea esta información? No estoy seguro de cómo encontrar eso exactamente en tiempo de ejecución, pero tampoco me ha faltado crear muchos métodos variados. Básicamente, a lo que me refiero es que no necesitas saberlo y que hay un problema mayor. Quizás, pero siempre podría estar equivocado :) –
¿Qué sucede cuando llamas 'method_getNumberOfArguments()' en un método verídico? Nunca lo intenté, pero tal vez devuelva un valor especial (como -1 o algo así)? Ver también 'method_copyArgumentType()'. – user1118321
@ user1118321 'method_getNumberOfArguments' devuelve conteo mínimo, como si fuera un método normal. –