Cómo utilizar el conteo de referencia automática (arco) para su aplicación para ios

Es posible que desee utilizar ARC para su aplicación iOS. recuento de referencias automático (ARC) es una característica de nivel compilador que simplifica el proceso de gestión de la vida útil de los objetos de Objective-C. En lugar de tener que recordar la hora de retener o liberar un objeto, ARC evalúa las necesidades de toda la vida de los objetos y automáticamente sintetiza el método apropiado llama en tiempo de compilación.

No es un nuevo modelo de memoria en tiempo de ejecución - y no es un recolector de basura. Toda la acción tiene lugar en el compiler.ARC se encarga del proceso de retención y liberación de los objetos mediante el aprovechamiento de (y tener el compilador de hacer cumplir) las convenciones de nomenclatura. También se basa en nuevos calificadores de propiedad puntero del objeto.

Para que no se preocupe, ARC es en realidad mucho más rápido (tiene un mejor rendimiento) que no hacer la gestión de memoria por su cuenta.

ARC no automatiza malloc () y gratis() (Funciones C) y no automatizar (CF) o (CG).

Para poder gestionar la memoria para usted, ARC impone algunas restricciones - hacer cumplir principalmente algunas mejores prácticas y no permitir algunas otras prácticas. Usted no tendrá que preocuparse por la mayor parte de esto en una aplicación que se creó para utilizar ARC.

Estas son las reglas que hay que seguir para utilizar ARC en su aplicación.

  • Regla 1: No llame a la conservar, lanzamiento, o autorelease métodos. Además, no se puede poner en práctica la costumbre o métodos.

    Si usted es nuevo en la programación Objective-C, esta regla no significa nada para ti, ya que no es algo que se le han estado haciendo en sus aplicaciones existentes. La única razón por la que necesita saber acerca de esta regla es entender lo que el código no-ARC está haciendo para gestionar la memoria. Si usted es un veterano, usted ha estado utilizando estos métodos, y estaremos encantados de ser contada no para usarlos.

    Puede proporcionar una implementación personalizada de dealloc si usted necesita para administrar otros recursos.

  • Regla 2: No almacenar punteros a objetos en estructuras C. Debido a que el compilador debe saber cuándo referencias van y vienen, no se puede almacenar punteros a objetos en structs. Para la mayoría de los lectores, que no será un problema, ya que va a utilizar los objetos en lugar de estructuras C.

  • Regla 3: Informar el compilador sobre la propiedad al usar objetos de estilo Fundación Core. En aplicaciones de iOS, a menudo se utiliza el CoreFoundation marco de referencia.

    CoreFoundation los objetos son nada comenzando con una CF- cosas como las funciones de la libreta de direcciones, por ejemplo. UN CoreFoundation objeto se vería así:

    AudioServicesCreateSystemSoundID ((__bridge CFURLRef) burnRubberURL, burnRubberSoundID) -

    ARC no gestiona automáticamente los tiempos de vida de CoreFoundation tipos, y hay CoreFoundation reglas de la memoria de gestión y funciones que puede utilizar, como CFRetain y CFRelease (O la correspondiente variantes de tipo específico).

    La mayoría de las veces, usted no tiene que preocuparse de la gestión de memoria, porque por lo general se emitan un objeto de Objective-C, a una CoreFoundation Tipo de objeto, o viceversa - con el resultado de que se termina sin CoreFoundation gestión de memoria en el código. Usted todavía tiene que dejar que el compilador sabe sobre las incidencias de gestión de memoria, sin embargo.

    Simplemente dice que no se preocupe ARC mediante el uso de una _puente emitir.

    Si usted tiene CoreFoundation gestión de memoria, tales como macros CFBridgingRetain o CFBridgingRelease transferirá la propiedad entre ARC y CoreFoundation.

  • Regla 4: Usar la @autoreleasepool palabra clave para marcar el comienzo de un bloque autorelease. Esto no es algo que va a estar preocupado - ni nunca lo hará, para el caso. Pero es una regla, no obstante.

  • Regla 5: Siga las convenciones de nomenclatura. El compilador sabe si retener un objeto basado en lo que se regresó. A veces, el objeto que está siendo devuelto por un método se conserva, ya veces es autoreleased más tarde. Si el objeto se va a autoreleased, el objeto necesita ser conservado. Si ya está retenido, no desea que el compilador para hacer cualquier cosa.

    La única forma en que el compilador sabe si un objeto ha sido retenido cuando se devuelve es a través de ciertas convenciones de nomenclatura. Bajo ARC, estas convenciones de nombres son ahora parte de la lengua, y hay que seguirlos.

    El compilador sabe que un objeto retenido ha sido devuelto cuando la primera palabra de la primera parte de la selector (El nombre del método) es alloc, nuevo, dupdo, copia muteable, o en eso. Estos métodos de transferencia de la propiedad - donde la propiedad transferida significa que el objeto se ha conservado para usted. Un ejemplo es la NSString initWithFormat: método. (Recuerde que la “propiedad” no es propiedad exclusiva:. Varios objetos pueden poseer al mismo tiempo un solo objeto)

    Además, no se puede dar una propiedad de un nombre que comienza con.

  • Regla 6: Sólo tiene que seguir las reglas. Eso es todo - sin retención o liberación de autoreleasing. Sólo tiene que seguir las reglas y el código al contenido de su corazón, sin tener que preocuparse por la gestión de memoria.

    Excepto, por supuesto, en algunas situaciones, se tendrá que indicar explícitamente al compilador acerca de lo que quiere hacer. En esos casos, usted tiene que decirle al compilador explícitamente sobre la vida de un objeto.

Artículos Relacionados