内存是所有程序使用的重要系统资源。程序必须先加载到内存中才能运行,并且在运行时,它们会分配额外的内存(显式和隐式)来存储和操作程序数据。为程序的代码和数据腾出内存空间需要时间和资源,因此会影响系统的整体性能。虽然我们无法完全避免使用内存,但有一些方法可以最大限度地减少内存使用对系统其余部分的影响。

Read on →

Instruments是功能强大且灵活的性能分析和测试工具,是Xcode工具集的一部分。它可以帮助我们分析iOS,watchOS,tvOS和macOS的应用程序,以便更好地了解和优化应用程序的行为和性能。从应用程序开发过程开始,将Instruments集成到的日常工作流程中,可以帮助我们在开发周期的早期发现问题进行优化解决,从而节省更多的时间。

Read on →

在了解了iOS了对象创建模式之后,接下来我们看看iOS的内存管理。通过理解其内部的原理来高效的使用内存、优化程序中的代码问题。在对iOS内存管理原理深入了解之前,我们先复习一下变量的生命周期和作用域,以及变量在内存中的分布。然后来看iOS是怎么对内存管理的以及怎么影响变量的生成和销毁的。

一、变量的生命周期

变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。是一种使用方便的占位符,用于引用变量数据在计算机内存中的地址。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变(immutable)的。在一些语言中,变量可能被明确为是能表示可变状态。

Read on →

Cocoa对象的创建分为两个阶段:分配和初始化。也就是两段构造(Two Stage Creation)的模式。没有这两个步骤,一个对象通常是不可用的。尽管几乎在所有情况下,初始化都紧跟在分配之后,但是这两个步骤在对象的形成中起着不同的作用。

一、对象创建过程

  • 分配对象

当分配一个对象,Cocoa从应用程序虚拟内存区域为对象分配足够的内存。要计算要分配的内存量,需要考虑对象的实例变量包括它们的类型和顺序。

Read on →

高效的内存管理是编写高性能代码的重要方面。最大限度地减少内存使用量不仅可以减少应用程序的内存占用,还可以减少占用的CPU时间。总之好处多多。近段时间都在看内存优化相关方面的东西。花了很多心思和时间,但总感觉收获不大。于是想把最近学习的资料和项目中的经验总结一下写成博客,这样收获更大,将来也方便回过头再看看。鉴于目前的技术水平,文中肯定有很多不对的地方,希望大家指出,一起交流学习。

Read on →