2011-01-07 13 views
56

Objective-C tiene una función llamada @dynamic.¿Qué hace @dynamic en Objective-C?

Google solo muestra los resultados sobre el tipado dinámico.

Raramente veo esto en el código y no entiendo para qué se usa. ¿Alguien puede explicarme esto? Gracias.

+0

Este es un duplicado de http://stackoverflow.com/questions/4524954/what-is-common-case-for-dynamic-usage/4524983#4524983 y http://stackoverflow.com/questions/1160498/ synthesize-vs-dynamic-what-are-the-differences –

+1

Lo que significa que esas dos preguntas también son duplicados de esta y de la otra, haciéndolas intercambiables. Aceptaré la respuesta y cerraré esto. :) –

Respuesta

60

@dynamic significa que "mi clase descubrirá cómo responder a esto en tiempo de ejecución". Utiliza un mecanismo de tiempo de ejecución para que un objeto intercepte mensajes a los que normalmente no respondería. En el caso donde se utiliza un db de Datos centrales para almacenar datos persistentes, NSManagedObject los convierte en llamadas al -valueForKey: y -setValueForKey:.

Eche un vistazo a Lecture 12 (Otoño de 2010) del curso de desarrollo de iPhone de Stanford.

+0

¿Pero cómo puede mi código agregar propiedades a un objeto en tiempo de ejecución? –

+3

compruebe el archivo '' y 'NSObject.h' – xhan

+27

@Time Machine:' @ dynamic' no significa necesariamente que la propiedad se agregará en tiempo de ejecución, es solo una forma de decirle al compilador "Sé que he declarado la propiedad pero no la implementé en esta clase, pero sé que estará allí en tiempo de ejecución". Podría ser tan simple como se sabe que la superclase proporciona la implementación. – JeremyP