在启用ARC的项目中,为什么维护保留计数不是必需的

保留计数是在Objective-C中pipe理内存的方式。 当你创build一个对象时,它的保留计数为1.当你发送一个对象的时候,一个保留消息的保留计数会增加1,我们知道ARC会自动执行,但是它是如何执行的? ?

我仍然怀疑是否内存pipe理是自动完成的,那么为什么有时我们得到访问错误的对象分配或检索。

我已经通过这个链接: – https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html

我认为ARC(在编译时通过在编译时通过插入retain / release命令来完成)取决于variables的范围,它们被定义(即初始化)的代码块,以及它的值是否存储在另一个variables,其范围比初始variables的范围更广泛。

这就是为什么你必须更准确地声明variables访问和存储的types:用variables告知编译器你的意图。

但是我也认为ARC不能比当前文件更进一步。 ARC对于全局variables和文件间依赖关系更为棘手。

所以,苹果一个更复杂的variables的声明语法来取代一个非常简单的(IMO)保留/释放模式。 所以开发人员不必担心内存pipe理。

这使苹果生态系统可以被更多的开发者用来pipe理语言(比如web开发者)来为iOS开发。

我认为,让开发人员相信你可以高效地开发而不必理解IT这样一个基本概念,就像内存pipe理是错误的。

但是更多的iOS开发者意味着开发更多的程序和更加稳定的生态系统,因此苹果的收入将会更多:-)

您最好阅读ARC文档: https : //developer.apple.com/library/ios/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html

ARC会为你pipe理内存,但是它不能阻止你编写程序错误,比如只把弱引用保存在对象中。