По той же причине автоматический подсчет ссылок поддерживает только 64-битный Snow Leopard в качестве минимальной цели развертывания: поддержка ARC требует определенных функций, присутствующих только в достаточно новой версии современной среды выполнения. Эта современная среда выполнения была представлена в iOS 4.0, поэтому в старых версиях iOS отсутствует среда выполнения, способная обрабатывать некоторые вещи, которые технически требуются ARC. Если бы это было просто связано с версиями ОС, 32-битные приложения Snow Leopard также были бы поддержаны, но только 64-битная среда выполнения является современной.
Если вы посмотрите презентации Apple от WWDC 2011 , в частности, «Углубленное продвижение Objective-C», вы увидите, что для ускорения был сделан ряд внутренних улучшений. процесс сохранения / освобождения, а также такие вещи, как более быстрый @autoreleasepool
. В спецификации LLVM ARC есть целый раздел о поддержке во время выполнения. Эти улучшения требуют не только поддержки компилятора.
Нам уже приходилось использовать современную среду выполнения для таких функций, как автоматический синтез переменных экземпляра (как описано в документации Apple ), так что это не страшный сюрприз.
Даже iOS 4.0 в качестве цели не поддерживает слабые ссылки, поэтому здесь явно есть технические проблемы. Это не просто маркетинговая стратегия, которая подталкивает разработчиков к более новым версиям, как утверждают другие.