Что мне нужно знать об автоматическом подсчете ссылок? - PullRequest
2 голосов
/ 12 февраля 2012

У меня есть приложение, которое я обновляю до последней версии XCode, и меня сбивают многочисленные ошибки, связанные с автоматическим подсчетом ссылок (ARC).

Ошибки вызывают меня, чтобы вытащить вызовы, например, autorelease и настройка другого написанного мною кода, касающегося управления памятью.

Документация Clang гласит:

[ARC] не предоставляет сборщик циклов;вместо этого пользователи должны явно управлять временем жизни.

... что меня очень нервирует.Я был укушен проблемами управления памятью в Objective-C в прошлом и работал над оправданием каждого retain, release и autorelease в моем коде.

Теперь ARC призывает меня принятьпрыжок веры в изменение моей семантики управления памятью.Что мне нужно знать, чтобы поверить в управление памятью ARC?

1 Ответ

7 голосов
/ 12 февраля 2012

Соглашения об именах . Исправьте все проблемы статического анализатора и убедитесь, что ваше имя понятно и соответствует соглашениям - теперь это служит связью с компилятором. Теперь это действительно не нужно, но хорошо, чтобы удалить все предупреждения компилятора и проверки, проверить, убедиться, что вы довольны именованием, а затем преобразовать. Это также означает повышение уровня предупреждений и устранение проблем.

Избегайте атрибутов Подробности здесь: Глубокая копия словарей дает Ошибка анализа в Xcode 4.2

Примеры в «Избегать атрибутов» демонстрируют важность безопасности типов, описательных имен методов и обеспечения того, чтобы вы включали то, что вы используете в переводе, и использовали строгое соответствие селектора . опция: -Wstrict-selector-match. Безопасность типов также возникает, когда вы выполняете небезопасные преобразования - скорее всего, вам нужно будет ввести безопасность типов через специальное приведение в некоторых частях вашей программы.

Висячие ссылки на неуправляемые типы . Видно здесь: Назначение существующего CGColor свойству CGColor работает в симуляторе iOS, а не на устройстве iOS. Почему?

[ARC] не предоставляет сборщик циклов; вместо этого пользователи должны явно управлять временем жизни.

Это относится к сильным циклическим ссылкам (например, объектам, зависящим от кода). Они будут существовать в вашей старой программе. Инструменты могут помочь вам обнаружить их.

После того как вы завершили конвертацию, будьте готовы протестировать несколько версий ОС.

Удачи!


Дополнительно:

Каковы преимущества и недостатки использования ARC?

...