Якщо я вирішую оновити до iOS 5, чи потрібно видалити всі заяви [myObject retain] та [myObject release] зі свого коду?
Так, але XCode 4.2 містить новий інструмент "Переміститись на об'єктивний-C ARC" (у меню Правка-> Рефактор), який робить це для вас. Виклик угоди - інша історія. Як згадується в коментарях, у посиланні кланг зазначено, що ви повинні дотримуватися методу 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 робить свою магію на час компіляції, а не на час виконання.
Замість того, щоб вам потрібно було пам’ятати, коли використовувати утримувати, випускати та автовипускати, ARC оцінює вимоги до експлуатації ваших об’єктів та автоматично вставляє відповідні методи, що вимагають вас під час компіляції. Компілятор також генерує для вас відповідні методи взаємодії.
Детальна інформація про ARC: http://clang.llvm.org/docs/AutomaticReferenceCounting.html