IOS 5 Arc Это все еще хорошая практика, чтобы освободить ваш объект, как только вы закончите. - PullRequest
0 голосов
/ 11 марта 2012

Я использую NSXMLParser и хотел бы освободить некоторые объекты, как только я закончу с ними при разборе. Тем не менее, я не уверен, если это испортит автоматический подсчет ссылок в IOS5? Это плохая практика выпускать объекты как можно скорее в коде в IOS5, когда вы закончите с ними?

1 Ответ

2 голосов
/ 11 марта 2012

Мало вещей, одна из них должна быть вашим ответом:

  • в проекте ARC вы не можете назвать сохранение или освобождение. Вызов этих методов приведет к ошибке времени компиляции, так что вы действительно больше не сможете управлять памятью вручную.

  • с другой стороны, вы можете включать и выключать ARC для каждого файла. Это очень легко сделать - откройте настройки проекта, нажмите «фазы сборки», откройте «сборку источников», затем выберите нужный файл .m и нажмите «enter» на клавиатуре - во всплывающем окне введите «-fno» -objc-дуга». Закройте и перезапустите Xcode (у них все еще есть ошибка с этим, так что ...). Теперь ARC отключен для этого файла - вы можете использовать retain и release в коде и все что угодно

  • однако есть и другой способ - использовать пул релизов. В общем, если вы собираетесь использовать много памяти и хотите, чтобы она была освобождена быстрее, вам следует использовать отдельный пул памяти, это очень легко сделать, и новый способ iOS5 выглядит следующим образом:

@autoreleasepool {
        // code code code code
}

Итак, все распределения, происходящие между фигурными скобками, будут освобождены, когда вы выйдете из блока - вот и все :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...