Convenciones de nomenclatura de Objective-C con ARC y posibles advertencias

Tengo experiencia con la codificación ARC pura. Como característica del compilador, respeta la familia de métodos Objctive-C realizando llamadas de retención / liberación siempre que sea necesario.

Todos los métodos que comienzan conalloc, mutableCopy, copy ynew crear un nuevo objeto. Aumentan el conteo de retenciones. Como consecuencia, ARC lanzará cualquier puntero (y por lo tanto el objeto asociado con él) cuando ya no lo necesite.

Creo que pueden surgir problemas cuando escribo métodos que no siguen las convenciones de nomenclatura. Por ejemplo, si escribo un método comonewCustomer que en una primera versión devuelve un objeto lanzado automáticamente mientras que en una segunda versión no, ¿qué podría pasar?

En particular, mis preguntas son las siguientes (pertenecen al mismo razonamiento):

¿Qué sucede si el código de llamada y el código de llamada se compilan con ARC?(una) ¿Qué sucede si el código de llamada se compila con ARC mientras que la llamada se compila con no ARC?(segundo) ¿Qué sucede si el código de llamada se compila con un no ARC mientras que el llamado se compila con ARC?

Se agradecería una respuesta que muestre cómo funciona ARC bajo el capó (objc_release, objc_retainAutoreleasedReturnValue, etc.).

Gracias de antemano.

Respuestas a la pregunta(2)

Su respuesta a la pregunta