18 votos

¿ARCO, vale la pena o no?

Cuando me mudé a Objective C (iOS) de C++ (y poco de Java) he tenido dificultades para la comprensión de la gestión de la memoria en iOS. Pero ahora todo esto parece natural y sé retener, grupo de liberación automática, copia y versión de las cosas. Después de leer sobre el ARCO, me pregunto ¿hay más beneficios de usar un ARCO o es sólo que usted no tiene que preocuparse acerca de la gestión de la memoria. Antes de pasar al ARCO quería saber lo que vale la pena está moviendo a ARCO.

  1. XCode ha "Convertir a C Objetivo ARCO" en el menú. Es la conversión de simple (nada de que preocuparse)?
  2. ¿Me ayudará en la reducción de mi memoria de aplicaciones huella, pérdidas de memoria, etc (de alguna manera ?)
  3. No tiene mucho de prueba de impacto en mis aplicaciones ?
  4. Lo que no son evidentes las ventajas?
  5. Cualquier Desventaja de la mudanza?

22voto

mattjgalloway Puntos 24217

Aquí está mi toma específica en ARCO:

1) XCode ha "Convertir a C Objetivo ARCO" en el menú. Es la conversión de simple (nada de que preocuparse)?

Es muy sencillo. Funciona. El uso de la misma. Como Kevin puntos Bajos a cabo, sin embargo, usted tendrá que ir a través de y corregir los bits donde el uso de los Cimientos Básicos de los objetos. Que solo requieren de una sana amarre de la __bridge o __bridge_transfer , aunque.

2) ¿me ayudará en la reducción de mi memoria de aplicaciones huella, pérdidas de memoria, etc (de alguna manera ?)

No, no realmente. OK, más o menos. Esto ayudará a reducir las pérdidas de memoria donde tienes codificados incorrectamente anteriormente. No reducir la huella de memoria.

3) ¿tiene mucho de prueba de impacto en mis aplicaciones ?

Ninguno en absoluto.

4) ¿cuáles son los no-obvias ventajas?

El futuro. Habrá más por venir en el bono que el compilador de tomar una intrincada conocimiento de cómo los objetos se cuentan las referencias que da. Por ejemplo ARC ofrece el encantador objc_retainAutoreleasedReturnValue optimización ya, que es muy agradable.

5) Cualquier Desventaja os mueve a ello?

Ninguno en absoluto.

Por favor, tome mi palabra para ella y empezar a usar el ARCO. No hay ninguna razón (OMI) no, por lo tanto las ventajas definitivamente, compensando las desventajas!

Para una mirada en profundidad cómo ARCO funciona, quizás, ayudar a convencer a usted de que es bueno, por favor, eche un vistazo a mi blog titulado "Una mirada debajo del ARCO de la campana" - aquí, aquí, aquí y aquí.

16voto

Steven Fisher Puntos 22249

Aquí es lo que usted realmente necesita saber acerca de ARCO:

El compilador entiende Objective-C y Cocoa mejor que usted. No me refiero a esto como un insulto; se entiende mejor que yo. Creo que se podría decir con seguridad que entiende las reglas mejor que todos, pero tal vez una docena de personas en todo el mundo. Y sabe trucos para usar en un grado en que usted y yo no se puede repetir, incluso si hemos entendido tan bien como lo hace.

El resto es sólo detalles:

  • Usted va a escribir mucho menos aburrido código. Código, por lo aburrido que es fácil cometer errores.
  • Como una combinación de tiempo de compilación y tiempo de ejecución del proceso, se tiene acceso a los trucos de los que no.
    • Es mejor un trabajo de escritura de la memoria de gestión de código que puede, incluso si usted escribe el teórico perfecta gestión de la memoria de código.
    • Esto ayudará a reducir la "marea alta" uso de la memoria (algo) sin ningún esfuerzo de su parte.
    • Con la puesta a cero de las referencias débiles, es mucho más fácil evitar los accidentes causados por la que cuelgan los punteros.
  • Si usted está comenzando una nueva aplicación, dejar de pensar en él y sólo lo utilizan.
  • Si usted tiene una aplicación existente:
    • Usted tendrá que volver a probarlo. Usted necesita para asegurarse de que no tienen referencias circulares.
    • Si usted tiene una aplicación existente de que los objetivos de iOS antes de iOS 5, la puesta a cero de las referencias débiles no son compatibles. Usted debería considerar seriamente que requiere iOS 5.
    • Si usted tiene una aplicación existente de que los objetivos de iOS antes de iOS 4, no se puede utilizar en absoluto. En qué estás pensando, el apoyo a la mierda esa vieja?!?
  • En la última versión de Xcode, no estaba completamente libre de errores. Probablemente todavía no lo es. Pero es todavía vale la pena utilizar.

5voto

Kevin Low Puntos 1687
  1. Si usted está utilizando el Núcleo de la Fundación o de la no-código Objective-C, entonces no es tan simple como usted tendrá que pasar manualmente a través de su código y asegurarse de que todos los modelos, entre Objective-C y el Núcleo de Fundación de un puente (si usted tiene cualquiera de los yesos). Usted todavía tiene que administrar la memoria para no Objective-C código.

  2. Se supone esencialmente en tomar el cuidado de todas las pérdidas de memoria para usted, ya que automatiza el retener, liberar, copiar, etc. Hasta ahora, nunca he tenido un Objetivo-C fuga desde el cambio a ARCO.

  3. No. Edificio podría tomar un poco más de tiempo, ya que tiene que ir a través de todo el código e insertar todos los retienen y el código de liberación.

  4. No estoy seguro si hay alguna. Al final, todo el ARCO es, es una de automator.

  5. Usted tendrá que aprender sobre el puente de moldes, así como usted no puede construir cualquier cosa inferior a iOS 4.

En la final, ella definitivamente vale la pena. Yo era escéptico al principio, pero después de ver la WWDC video donde explican cómo funciona, me gustaba más y más.

3voto

Josh Brown Puntos 16044

Has leído la documentación de Apple en ARCO? Responde a muchas de las preguntas que le estás pidiendo.

Basado en mi experiencia, he aquí lo que pienso:

  1. Sí, es muy sencillo. Usted definitivamente necesidad de probar la aplicación después de la conversión, sin embargo.
  2. Esto puede ayudar a reducir su aplicación en el uso de la memoria y de las fugas, pero no está garantizado para hacer que.
  3. Sí. Usted querrá probar después de convertir en el ARCO.
  4. Usted no tiene que perder el tiempo pensando y seguimiento de fugas. Usted puede pasar más tiempo y energía en su aplicación del código real, en lugar de preocuparse por conservar/liberación. Incluso si retener/código de liberación es natural y fácil para usted, usted no es infalible y a veces olvida de quitar algo. ARCO no se olvida.
  5. Si estás apoyando a iOS 4, tendrás que manejar referencias débiles, como el ARCO no apoyar a aquellos en iOS 4.

1voto

3) Usted debe volver a probar tus aplicaciones, pero en mi experiencia es más o menos igual que el trabajo. Mira todas las advertencias del compilador muy cuidadosamente, aunque!!!

4) No obvias ventajas: es muy rápido el código cuando usted no tiene que pensar acerca de la gestión de la memoria. Tal vez eso es obvio, pero la cantidad de ayuda que aún me sorprendió.

5) Desventajas: la única desventaja es tener que apagar el ARCO de algunas bibliotecas de terceros.

ARCO ha sido tan útil, yo simplemente no código sin más. No hay ninguna razón para tener que lidiar con todo eso y funciona bastante bien en la práctica.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: