【问题标题】:Where are the best explanations of memory management for iPhone? [closed]iPhone内存管理的最佳解释在哪里? [关闭]
【发布时间】:2010-10-17 03:41:17
【问题描述】:

我正在寻找好的解释。我有一本关于 Objective-c 的 1000 页书,但不幸的是,关于内存管理、保留计数的部分描述得非常糟糕且难以理解。

【问题讨论】:

    标签: iphone memory-management


    【解决方案1】:
    【解决方案2】:

    简要说明:您分配保留复制的任何内容也必须释放。此外,如果您打算在当前消息循环之外继续保留任何您不分配或复制的内容(否则您有可能将其自动释放并成为无效引用)。

    【讨论】:

    • ...并且记住任何从 init... 开始的东西都遵循这些规则。 initWithImage initWithoutClosingTheFridgeDoor 等。在实现类时也应该遵循这些规则。 init... 消息应该返回一个保留计数为 1 的对象,依此类推。
    • 这不太正确。来自 Apple 文档developer.apple.com/mac/library/documentation/cocoa/conceptual/…如果您使用名称以“alloc”或“new”开头或包含“copy”的方法(例如,alloc、newObject 或 mutableCopy ),或者如果您向其发送保留消息。
    • Eric,我想你的意思是 allocretaincopy。 :)
    【解决方案3】:

    对我来说Apple's Memory Management Programming Guide 工作得很好。

    它从一开始就解释了基础知识,因此您可以开始工作。但如果您有兴趣,它也会涉及更高级的主题。

    【讨论】:

      【解决方案4】:

      特别是关于使用 NIB 和 IBOutlet 的内存管理,这是我见过的最短和最清晰的描述:

      http://blog.airsource.co.uk/index.php/2008/12/23/memory-management-and-nibs/

      【讨论】:

        【解决方案5】:

        当然,有很多免费资源可用于学习内存管理,但如果您真的是该主题的新手并且更喜欢可视化方法,Steve Scott(运行 Mac 开发者网络的人)有一个很棒的,一套完整的培训视频,只需 10 美元即可下载:http://www.mac-developer-network.com/videotraining/beginner/vid001/。这基本上是一个超越“使用释放和自动释放”的讲座,并讨论了操作系统如何管理内存。如果您在 Comp 中错过了这些内容,将非常有帮助。科学。 101.

        FWIW,我使用了一组三个“如果”条件,这些条件在我刚开始时很有帮助(例如,“如果我分配或复制对象,那么……”)。对我来说,一开始记住这三个条件比记住一套完整的规则更容易。我写了一个简短的教程,使用这些“大脑触发器”来解释规则,以防它对其他人有帮助。 http://www.clintharris.net/2009/three-brain-triggers-for-objc-memory-mgmt/

        【讨论】:

          【解决方案6】:

          CocoaDev 总是有很好的资源,他们对内存管理的介绍也不例外。

          【讨论】:

            【解决方案7】:

            Memory Management in Objective-C Learn Obj-C Memory Management

            他们有一些简单的答案,但也有指向 Apple 文档的链接。

            【讨论】:

              【解决方案8】:

              这是我找到的最简洁的解释之一:

              http://www.dikant.de/2007/08/23/cocoa-memory-management-101

              【讨论】:

                猜你喜欢
                • 2010-10-17
                • 1970-01-01
                • 1970-01-01
                • 2011-06-22
                • 1970-01-01
                • 1970-01-01
                • 2013-07-10
                • 2011-05-14
                • 1970-01-01
                相关资源
                最近更新 更多