【问题标题】:How important is memory release for iPhone Apps? [closed]iPhone 应用程序的内存释放有多重要? [关闭]
【发布时间】:2013-02-09 13:11:16
【问题描述】:

我是Objective C的初学者。我知道java编程并且在介绍级别的课程中,内存释放不包括在内(我不知道是否有更高级的课程或java编译器处理这个) .但是,即使在介绍级别,我也需要手动释放 Objective C 程序的内存。我知道这样做是一个好习惯,但它有多重要?特别是如果我想开发 iPhone 应用程序,内存释放是否非常紧迫(不这样做会导致处理速度显着变慢)?通过 iPhone 应用程序,我不是在谈论具有梦幻般的视觉效果、高品质音效和其他可能使内存释放变得重要的东西的大型 3D 游戏。我只是想开发一些小工具,比如计算器,提醒,或者日记本。那么内存释放有多重要呢?

我认为在过去,当 C 语言程序运行在可能没有太多内存和处理速度的超级旧计算机上时,内存释放很重要。但考虑到 iPhone 是一款相当先进的设备,手动释放内存是不是有点过时了?

【问题讨论】:

  • 这个问题不太适合 SO。该站点更多用于特定技术问题。如果我是你,我会继续阅读有关 Objective-C 的内容并增加我对该主题的了解,然后将任何具体问题提请 SO 关注。
  • 对不起,如果它不合适。我只是对释放内存的手动工作感到沮丧,我想知道在我的教科书中阅读有关内存释放的内容时是否应该认真和小心。

标签: iphone objective-c memory memory-management


【解决方案1】:

我知道 java 编程,在 intro 级别的课程中,没有涉及内存释放(我不知道是否有更高级的课程或 java 编译器处理这个)。

不完全是编译器,但 Java VM 有一个垃圾收集器,所以不必担心内存管理。

那么内存释放有多重要?

非常重要。 无论是运行时还是程序员,无论您使用 MRC 还是 ARC(在 Objective-C 中),您都应该保持应用程序的内存指纹尽可能低尽可能通过正确管理内存。

我认为在过去,当 C 语言程序运行在可能没有太多内存和处理速度的超级旧计算机上时,内存释放很重要。但考虑到 iPhone 是一款相当先进的设备,手动释放内存是不是有点过时了?

哦。我才明白为什么很多应用程序会占用我 iPhone 的所有可用 RAM。那是因为这是当今“开发者”的态度。我明白了……

【讨论】:

    【解决方案2】:

    这取决于你在做什么。一般来说,正确释放内存非常重要,否则它会堆积并吃掉所有的内存。这对于像游戏这样的东西会很快发生,或者对于只有文本和数字的东西会非常缓慢地发生,尽管它仍然会在那里。然而,内存释放并不像听起来那么难。如果您使用的是 ARC,您几乎可以忘记它(但要注意有些奇怪的情况)。即使您不使用 ARC,Apple 也会为您做很多事情,例如在逻辑时间(例如在删除 viewController 时)对对象调用 release。

    此外,内存管理通常只适用于使用面向对象的代码。如果你只是做一个简单的计算器,你可能不需要任何面向对象的东西,你可以在浮点数中工作。一个只处理浮点数的简单应用程序将没有内存管理。

    【讨论】:

    • 我挑战你制作一个使用原始类型而不使用对象的 iPhone 应用程序!
    • 是的,我认为 iPhone 应用程序编程的基本范式是 OOP。 XCode 自动创建视图和控制器对象,您需要制作模型。此外,Foundation 和 UIKit 只是对象的集合。
    • 如果您正在创建最简单的计算器应用程序,则所有对象都通过 Interface Builder 处理,除非您更新 UILabel 或显示答案,这应该是一个非常简单的情况下,由 ARC 处理。其余代码是原始类型。
    猜你喜欢
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 2011-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多