Если я решу перейти на iOS 5, нужно ли мне удалить все операторы [myObject retain] и [myObject release] из моего кода?
Да, но XCode 4.2 включает в себя новый инструмент «Migrate to Objective-C ARC» (в меню «Правка-> Рефакторинг»), который сделает это за вас. Вызов колллока - это отдельная история. Как упоминалось в комментариях, ссылка на clang гласит, что вы должны оставить свой метод dealloc:
Обоснование: даже несмотря на то, что ARC автоматически уничтожает переменные экземпляра, есть все еще законные причины для написания метода dealloc, например, освобождения ресурсов, не подлежащих сохранению. Неспособность вызвать [super dealloc] в таком методе - почти всегда ошибка.
Вы включаете ARC, используя новый флаг компилятора -fobjc-arc. ARC поддерживается в Xcode 4.2 для Mac OS X v10.6 и v10.7 (64-разрядные приложения) и для iOS 4 и iOS 5. (Слабые ссылки не поддерживаются в Mac OS X v10.6 и iOS 4). В Xcode 4.1 нет поддержки ARC.
-
Если я разрабатываю новое приложение для iOS 5 с использованием ARC, нужно ли мне выполнять какие-то проверки «ретро-совместимости»? Т.е. мне нужно будет проверить версию iOS и позвонить, сохранить и отпустить соответственно? Итак, в принципе, доступна ли ARC для всех версий iOS или только для iOS 5?
Нет, потому что ARC делает свое волшебство во время компиляции, а не во время выполнения.
Вместо того, чтобы вам приходилось помнить, когда использовать retain, release и autorelease, ARC оценивает требования к сроку службы ваших объектов и автоматически вставляет соответствующие вызовы методов для вас во время компиляции. Компилятор также генерирует подходящие методы dealloc для вас.
Дополнительная информация о ARC: http://clang.llvm.org/docs/AutomaticReferenceCounting.html