Соглашения об именовании Objective-C с ARC и возможные предупреждения

У меня есть опыт работы с чистым кодированием ARC. В качестве функции компилятора он учитывает семейство методов Objctive-C, выставляя право сохранять / освобождать вызовы, когда это необходимо.

Все методы, которые начинаются с,allocmutableCopycopy а такжеnew создать новый объект. Они увеличивают количество сохраняемых. Как следствие, ARC освободит любой указатель (и, следовательно, объект, связанный с ним), когда он мне больше не нужен.

Я думаю, что проблемы могут возникнуть, когда я пишу методы, которые не следуют соглашениям об именах. Например, если я напишу метод, какnewCustomer что в первой версии возвращает автоматически выпущенный объект, а во второй - нет, что может произойти?

В частности, мои вопросы следующие (они относятся к одной и той же аргументации):

Что произойдет, если вызывающий и вызываемый код скомпилированы с ARC?(А) Что произойдет, если вызывающий код скомпилирован с ARC, а вызываемый скомпилирован с не-ARC?(Б) Что произойдет, если вызывающий код скомпилирован с не-ARC, а вызываемый скомпилирован с ARC?

Был бы признателен за ответ, который показывает, как работает ARC под капотом (,objc_releaseobjc_retainAutoreleasedReturnValue, так далее.).

Заранее спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос