跟踪分配测试结果 - 看起来好还是不好?

时间:2012-08-14 16:08:55

标签: iphone ios xcode ios5

我正在尝试记忆测试我的应用。

我已经按照组织者 - 文档文章“恢复已放弃的内存”,但我不确定结果是否会使我的测试页面变好或不好,或介于两者之间。

(我的测试涉及:导航到第2页,返回第1页,按'马克堆'重复25次以获得良好的衡量标准。)

附件是我的分配测试的屏幕截图。大多数#Persistent值都是0.但是有一些异常。这些是典型的吗?

(最后一张快照,26,是在停止录制后拍摄的,并按照文档中的建议在跟踪结束处按下'Mark Heap'。)

我会非常感谢你的一些建议。感谢。

enter image description here

1 个答案:

答案 0 :(得分:2)

我相信你正在使用ARC,如果你正在使用ARC,就没有必要为堆积而烦恼,它会处理所有事情。

以下是使用ARC时要记住的9个简单点from Apple's docs

  

ARC强加了一些使用其他时不存在的新规则   编译模式。规则旨在提供完全可靠的   记忆管理模式;在某些情况下,他们只是执行最好的   实践,在其他一些实践中,它们可以简化代码或显而易见   你不必处理内存管理的推论。如果你   违反这些规则,您会立即得到编译时错误,而不是   可能在运行时变得明显的微妙错误。

     
      
  1. 您无法显式调用dealloc,或实现或调用retain,       release,retainCount或autorelease。          禁止扩展到使用@selector(retain),@ selector(release)等。

  2.   
  3. 如果需要管理除释放实例变量之外的资源,则可以实现dealloc方法。你不必      (实际上你不能)释放实例变量,但你可能需要      在系统类和。上调用[systemClassInstance setDelegate:nil]      其他未使用ARC编译的代码。          ARC中的自定义dealloc方法不需要调用[super dealloc](它实际上会导致编译器错误)。该   链接到      super由编译器自动执行。

  4.   
  5. 您仍然可以使用CFRetain,CFRelease和其他相关功能      核心基金会风格

  6.   
  7. 您不能使用NSAllocateObject或NSDeallocateObject。

  8.   
  9. 使用alloc创建对象;运行时负责      解除分配对象。

  10.   
  11. 您不能在C结构中使用对象指针。          您可以创建一个Objective-C类来管理数据,而不是使用结构。          id和void *之间没有偶然的演员。

  12.   
  13. 您必须使用特殊的强制转换来告诉编译器有关对象的生命周期。你需要这样做才能在Objective-C对象之间进行转换      您作为函数参数传递的Core Foundation类型。更多      详情请参阅“管理免费电话桥接”。

  14.   
  15. 您无法使用NSAutoreleasePool对象。          ARC提供了@autoreleasepool块。它们的优点是比NSAutoreleasePool更有效。

  16.   
  17. 您无法使用内存区域。          不再需要使用NSZone - 无论如何它们都会被现代的Objective-C运行时忽略。

  18.