只有iOS 4.0及以上版本支持ARC的技术原因是什么?
我的理解是,它是一个编译器功能,它只是自动插入内存管理相关代码,而不是要求开发人员这样做.从我所看到的电话本身保持不变 – 至少这就是苹果Transitioning to ARC Guide所暗示的.
因此,它不应该涉及以前版本的iOS中没有存在的功能,并且尽管稍后介绍,ARC也可以与iOS 4.0配合使用.
我好奇地问这个问题,实际上并不需要使ARC与iOS 3.x一起使用.
解决方法
同样的原因,自动引用计数仅支持64位Snow Leopard作为最低部署目标:ARC支持需要仅在现代运行时间足够新版本中存在某些功能. iOS 4.0引入了现代运行时,因此较旧的iOS版本缺少运行时,可以处理ARC所需技术上的一些问题.如果它只是键入操作系统版本,也将支持32位Snow Leopard应用程序,但只有64位运行时是现代版本.
如果您从WWDC 2011观看Apple的演讲,特别是“Objective-C Advancements In-Depth”,您将看到,已经做了一些改进,以加快保留/发布过程,以及事情像更快的@autoreleasepool. LLVM ARC specification有一个关于运行时支持的整个部分.这些改进不仅仅需要编译器支持.
我们已经不得不使用现代运行时的功能,如自动合成实例变量(如Apple’s documentation所述),所以这不是一个可怕的惊喜.
即使是iOS 4.0作为目标,缺乏对弱引用的支持,因此在这里发挥明显的技术问题.这不仅仅是推动开发人员进入新版本的营销策略,而是被其他人所断言.