【问题标题】:About memory management in Objective-C or iOS关于 Objective-C 或 iOS 中的内存管理
【发布时间】:2016-02-26 13:10:44
【问题描述】:

大家好,这是我在这个网站上的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?

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

谢谢。

【问题讨论】:

标签: ios objective-c


【解决方案1】:

ARC - 自 iOS4 以来引入了自动引用计数。而目前 ARC 是 iOS 开发中最常见和最佳的实践。

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

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

现在在 ARC 中,您不必担心所有这些。您编写代码并在编译时编译器将这些消息放在您看不到的地方。 PS-release在ARC中是被禁止的。

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

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

【讨论】:

  • "ARC 是 iOS 的必备" 你从哪里得到的?我不会反对“最佳实践”、“常见”甚至“无处不在”——但这不是必需的。
  • 让我改写一下,MRC 已过时,这使得 ARC 成为最常见和最佳实践。感谢您指出。编辑它
  • 感谢您对我的疑问做出宝贵而清晰的解释。
  • @SahebRoy 在面试中如果面试官问我什么是内存管理,因为我说我在帖子中的回答是正确的
  • 您好,感谢您的解释。你最后分享的链接失效了
【解决方案2】:

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

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

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

【讨论】:

  • 感谢您的解释和链接。会注意的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
相关资源
最近更新 更多