Convenções de nomenclatura Objective-C com ARC e possíveis ressalvas

Eu tenho experiência com codificação ARC pura. Como um recurso de compilador, ele honra a família de métodos Objctive-C em manter retidas / soltas chamadas sempre que necessário.

Todos os métodos que começam comalloc, mutableCopy, copy enew crie um novo objeto. Eles aumentam a contagem de retenções. Como conseqüência, o ARC lançará qualquer ponteiro (e, portanto, o objeto associado a ele) quando eu não precisar mais dele.

Eu acho que os problemas podem surgir quando escrevo métodos que não seguem as convenções de nomenclatura. Por exemplo, se eu escrever um método comonewCustomer que em uma primeira versão retorna um objeto autoreleased enquanto em uma segunda versão não, o que poderia acontecer?

Em particular, minhas perguntas são as seguintes (elas pertencem ao mesmo raciocínio):

O que acontece se o código chamado e chamado forem compilados com o ARC?(uma) O que acontece se o código de chamada é compilado com o ARC enquanto o chamado é compilado com o não-ARC?b) O que acontece se o código de chamada é compilado com o não-ARC enquanto o chamado é compilado com o ARC?

Seria apreciado uma resposta que mostre como a ARC trabalha sob o capô (objc_release, objc_retainAutoreleasedReturnValue, etc.).

Agradeço antecipadamente.

questionAnswers(2)

yourAnswerToTheQuestion