¿Cómo funciona la introspección en aplicaciones ios

La introspección se refiere a las instalaciones en un lenguaje de programación de aplicaciones IOS para examinar la estructura y otros detalles de un objeto y su clase en tiempo de ejecución. Estos detalles pueden incluir:

Video: Como Dar Confianza a una Aplicación en iOS | Tutorial en iOS

  • Un objeto&rsquo-s árbol de herencia

  • Si se ajusta a un protocolo específico

  • Tanto si se responde a un mensaje determinado

Cuando sabes lo que un objeto está hecho, se puede construir mediante programación para enviar mensajes a ella, lo que hace que su programa mucho más dinámico.

Video: Cider ejecuta aplicaciones nativas de IOS en Android

Como llegar a la clase de un objeto

Puede obtener la clase de un objeto en tiempo de ejecución. De hecho, Objective-C trata a clases como objetos de primera clase. Cada objeto clase apunta a una estructura de datos en la memoria, tiene una superclase (conocido como metaclase), Y puede responder a los mensajes que invocan métodos.

Cuando se llama a un método de clase, en realidad está enviando un mensaje al objeto de la clase.

Usted puede obtener una referencia al objeto de clase para la clase mediante el envío de un mensaje a la clase de clase (muchacho! Era eso confundiendo a escribir.), Y se obtiene la superclase de una clase mediante el envío de un mensaje al objeto superclase. Por ejemplo, puede imprimir la clase y la superclase de un objeto, como un objeto StackOfInteger, de la siguiente manera:

StackOfInteger * astack = [[alloc StackOfInteger] init] -NSLog (@"Clase es @%, y super es% @."[Clase astack], [astack superclase]) -

Cómo llamar dinámicamente métodos

A continuación, puede llamar a un método en un objeto de clase de la siguiente manera:

Clase postfixCalculatorClass = [clase someObject] - [postfixCalculatorClass performSelector: @selector (printClassDescription)] -

Dos artículos necesitan ser explicadas aquí. En primer lugar, la @selector es una compilar-Directiva sobre el tiempo y devuelve un puntero al método printClass. En segundo lugar, a continuación, puede utilizar performSelector para realmente llamar a ese método.

Video: Como Descargar Aplicaciones De Pago Gratis Para IOS SIN JAILBREAK | SEPTIEMBRE 2016

En el ejemplo anterior, el nombre del método fue traducido a un puntero al método en tiempo de compilación. También puede llamar a un método de instancia en un objeto utilizando el nombre de cadena de un método, en tiempo de ejecución, de la siguiente manera:

SEL printClassDescriptionSEL = NSSelectorFromString (@"printClassDescription") - [postfixCalculatorClass performSelector: printClassDescriptionSEL] -

En este ejemplo, se puede utilizar el tipo de SEL (también conocido como un selector en Objective-C lenguaje, y por lo que el SEL) para mantener la representación interna de un método.

Cómo comprobar la especificación de un objeto

Una vez que tenga un identificador a un objeto de clase, puede inspeccionar en tiempo de ejecución utilizando las funciones de introspección previstas en Objective-C. Por ejemplo, puede probar este objeto para ver qué tipo es. Puede inspeccionarlo para ver si tiene un cierto método o un determinado atributo, y así sucesivamente.

La siguiente tabla muestra todos los métodos para probar la estructura y la capacidad de un objeto de clase y para llevar a cabo acciones en él.

MétodoPregunta o Acción
-(BOOL) isKindOf: clase a objetosEs el objeto de un miembro o descendiente de una clase?
-(BOOL) isMemberOf: clase a objetosEs el objeto de un miembro de una clase?
-(BOOL) respondsTo: Selector¿Puede el objeto responder a un método?
+(BOOL) instancesRespondTo: SelectorPueden instancias de la clase responder a un mensaje?
-(Id) realice: SelectorAplicar el método especificado por el selector.
+(BOOL) conformsToProtocol: (Protocolo *)aProtocolSÍ si el receptor se ajusta al protocolo aProtocol- lo contrario, NO.

Para más detalles sobre la introspección y cómo usarlo, echa un vistazo a la Apple iOS tiempo de ejecución de referencia y el Guía de programación de Apple desarrollador de Objective-C en tiempo de ejecución.

Artículos Relacionados