AD

¿Ya dominas lo básico? Un curso estructurado de Objective-C es la vía rápida para dar el salto.

Ver cursos de Objective-C en Udemy

Enlace de afiliado. No te cuesta nada extra.

🍎Lecciones de Objective-C
Lección 26 / 68

Escribir una función de argumentos variables

En esta lección escribirás una función que acepta un número variable de argumentos.

Se usa la maquinaria de C: va_list guarda la lista, va_start la abre, va_arg saca el siguiente y va_end la cierra.

El código de ejemplo suma tantos números como se le pasen.

Lo delicado es que la función no sabe cuántos argumentos recibió ni de qué tipo son. Hay que decírselo de alguna manera: aquí, con un primer parámetro que da el recuento. La otra convención habitual en Objective-C es terminar la lista con nil, que es lo que hacían los constructores antiguos de colecciones.

Si el recuento no coincide con lo que se pasó, o si el tipo pedido a va_arg no es el real, no hay ningún error: se lee memoria arbitraria. Es de las partes menos seguras del lenguaje, y la razón de que en código moderno se prefiera pasar un array.

Donde sí se usa a diario es en NSLog y stringWithFormat:, que son funciones de argumentos variables. Y ahí está el motivo de que un marcador equivocado sea tan peligroso: la función se fía de lo que dice la plantilla.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar Objective-C directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)