如何解读这个iOS Instruments数据?

时间:2012-05-10 03:16:02

标签: ios instruments

我创建了一个示例应用程序,它声明了一个宏,如下所示:

#define kSampleString @"didReceiveMemoryWarningdidReceiveMemoryWarningdidReceiveMemoryWarningdidReceiveMemoryWarningdidReceiveMemoryWarningdidReceiveMemoryWarningdidReceiveMemoryWarningdidReceiveMemoryWarningdidReceiveMemoryWarningdidReceiveMemoryWarningdidReceiveMemoryWarningdidReceiveMemoryWarning"

当用户点击下面的事件处理程序时,我会记录宏字符串。

-(IBAction)SampleMethod:(id)sender{
    NSLog(@"Log %@",kSampleString);
}

以下是我得到的工具数据:

enter image description here 在检查仪器中的分配时,我得到了以下信息。我能够发现分配发生在红色标记区域的NSLogv调用中。但是如何解释与NSLogv相关的其他事情。那些malloc操作发生了什么?

1 个答案:

答案 0 :(得分:1)

Malloc只是目标C的alloc的C版本,并且在执行alloc时最终被调用。 Instruments会跟踪您应用中的所有分配,因此Malloc显然是很自然的。

至于CFString,那是NSString的CoreFoundation表兄弟(因为NSString是围绕CFString构建的类集群),无论如何你总是应该传递NSLog()一个不可变的字符串,所以这很有道理。如果你的应用程序泄漏内存,那么这将是一个问题,但就目前而言,一切都很好。

我担心的是大量的1.5 KB字符串Malloc大约在列表的一半。对于一个简单的字符串来说,这看起来太多了。