我有一个奇怪的问题 - 我的应用程序只在设备上泄漏内存,而不是在模拟器上。如果我在任何地方安排任何地方的更新方法,它就会泄漏。尽管update方法是空的,但它正在泄漏,除了NSLog之外没有任何东西在里面。怎么会这样?我甚至计划在第一个场景上安排更新,似乎没有任何泄漏,并安排另一个空,它正在泄漏或没有泄漏,但分配的东西,结果是相同的 - 消耗的内存量正在增加,我的应用程序是很快就崩溃了。 我可以通过使用Instruments-> Memory-> Activity Monitor或在以下功能的帮助下检测泄漏:
void report_memory(void)
{
struct task_basic_info info;
mach_msg_type_number_t size = sizeof(info);
kern_return_t kerr = task_info(mach_task_self(),
TASK_BASIC_INFO,
(task_info_t)&info,
&size);
if( kerr == KERN_SUCCESS )
{
NSLog(@"Memory in use (in bytes): %u", info.resident_size);
}
else
{
NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
}
}
任何人都可以向我解释发生了什么吗?