На платформах Mac и iOS утечки памяти часто вызываются невыпущенными указателями. Традиционно всегда было крайне важно проверять ваши выделения, копии и сохранения, чтобы убедиться, что у каждого есть соответствующее сообщение о выпуске.
Набор инструментов, который поставляется с Xcode 4.2, вводит автоматический подсчет ссылок (ARC) с последней версией Компилятор LLVM , который полностью решает эту проблему, заставляя компилятор управлять памятью за вас. Это довольно круто, и это действительно сокращает много ненужного, рутинного времени разработки и предотвращает множество неосторожных утечек памяти, которые легко исправить при правильном балансе сохранения / освобождения. Даже пулы автозапуска должны управляться по-разному, когда вы включаете ARC для приложений Mac и iOS (поскольку вам больше не нужно выделять свои собственные NSAutoreleasePool
).
Но что другое утечки памяти не предотвращают то, что мне все еще нужно остерегаться?
В качестве бонуса, в чем разница между ARC в Mac OS X и iOS и сборкой мусора в Mac OS X?