保留计数是在Objective-C中管理内存的方式。当您创建一个对象时,它的保留计数为1.当您向对象发送保留消息时,其保留计数会增加1,我们知道ARC会自动执行此操作,但它如何执行它所使用的技术? ?
我仍然想知道内存管理是否自动完成,那么为什么有时我们会在对象分配或检索时遇到错误的访问错误。
我已经浏览过这个链接: - https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html
答案 0 :(得分:2)
我认为ARC(由编译器在编译时完成,通过插入retain / release命令,其中'必要')依赖于变量的范围,即定义它们的代码块(即初始化)如果其值存储在另一个范围比初始变量的范围更宽的变量中。
这就是为什么你必须更准确地声明变量访问和存储的类型:用变量通知编译器你的意图。
但我也认为ARC不能比当前文件看得更远。 ARC对全局变量和文件间依赖性更加棘手。
因此,Apple更复杂的变量声明语法来取代非常简单的(IMO)保留/释放模式。因此,开发人员不必担心内存管理问题。
这使得许多开发人员可以使用Apple生态系统访问托管语言(如Web开发人员),以便为iOS开发。
我认为让开发人员相信您可以高效地开发而不必理解IT中的内存管理等基本概念是错误的。
但是,iOS的开发人员越多意味着开发的程序越多,活动中的生态系统就越稳定,因此Apple的收入会增加:-)
答案 1 :(得分:0)
ARC将为您管理内存,但它不能阻止您编写编程错误,例如只保留对象的弱引用。