繁体   English   中英

关于Objective-C或iOS中的内存管理

[英]About memory management in Objective-C or iOS

大家好,这是我在该网站上的first post ,我是iOS的新手。 我知道这是针对编程站点的,但是我没有任何iOS专家和资源来了解我的疑问,因此请不要将我标记为negative ,请尝试解决我的问题。 这是我的问题:

几天前,我去我们学校接受iOS的正式面试,他们问我:

  1. what is memory management in Objective-C or iOS?

我说:内存管理用于在Objective-C中管理内存的保留计数方式。 创建对象时,其保留计数为1。发送对象时,其保留计数将增加1。当发送释放消息时,其保留计数将减少1。

  1. what type of memory management are using like MRC/ ARC??

我说:对于我们分配的MRC,保留它必须对ARC进行发布/自动发布,我们需要发布/自动发布。

My question is:


1. Actually is my first answer correct about memory management?

2. From which version of iOS SDK are using ARC, MRC?

请好好解决我的困惑。 它会帮助我知道什么是什么?

谢谢。

ARC-自iOS4起引入了自动引用计数。 当前,ARC是iOS开发的最常见和最佳实践。

MRC-手动引用计数是您必须DIY的地方。

内存管理-在iOS对象中,对象是否应该在内存中,取决于对象的保留计数。创建对象时,保留计数为1。向对象发送retainstrong消息时,保留计数增加1,而当您发送的release保留计数将减少1。最后,当对象保留计数为0时,该对象的内存将被释放。

现在在ARC中,您不必担心所有这些。 您编写代码,然后在编译时,编译器将这些消息放置在您看不见的地方。 ARC中禁止PS release

在MRC中,您必须自己跟踪所有对象的内存,这很麻烦,因此Apple首先引入了ARC。

简而言之,这就是内存管理。 为了更好的理解,请访问此链接 该博客以更详细的方式介绍了内存管理。 希望这对您有所帮助。

(1)对于内存管理,这里有一个很好的教程( http://www.raywenderlich.com/2657/memory-management-tutorial-for-ios

(2)在ARC中,操作系统负责内存管理,因此您不必担心释放对象,这对于初学者来说非常整洁。 而在“手动计数”中,您将必须跟踪释放内存,如果不这样做,最终将导致应用崩溃。

ARC和MRC可在ios中使用,而垃圾回收仅限于MAC-OSX,希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM