我有一个销售点iPad应用程序,它适用于前几个交易。在大约10次交易背靠背后,应用程序变得非常缓慢。用户界面需要一秒钟以上才能响应触地事件。因此,当我杀死应用程序并重新启动它时,它再次完美运行。我使用以下函数来检查免费的VM 每个新事务的响应时间似乎呈指数级增长,最终应用程序变得无法使用。
-(void)print_free_memory
{
mach_port_t host_port;
mach_msg_type_number_t host_size;
vm_size_t pagesize;
host_port = mach_host_self();
host_size = sizeof(vm_statistics_data_t) / sizeof(integer_t);
host_page_size(host_port, &pagesize);
vm_statistics_data_t vm_stat;
if (host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size) != KERN_SUCCESS)
NSLog(@"Failed to fetch vm statistics");
/* Stats in bytes */
natural_t mem_used = (vm_stat.active_count +
vm_stat.inactive_count +
vm_stat.wire_count) * pagesize;
natural_t mem_free = vm_stat.free_count * pagesize;
natural_t mem_total = mem_used + mem_free;
// [self displayAlert:@"Memory" message:[NSString stringWithFormat:@"used: %u free: %u total: %u", mem_used, mem_free, mem_total]];
// NSLog(@"used: %u free: %u total: %u", mem_used, mem_free, mem_total);
}
内存使用情况似乎或多或少不变。所以,我不确定问题是什么。有谁可以帮我解决这个问题?我试过自己设置对象为零。但这似乎没有改善这个问题。
答案 0 :(得分:0)
谢谢大家的回复。感谢你们,我能够找出放慢速度的原因。下面是时间分析的结果。
有这种方法
运行时间自我符号名称
250185.0ms 81.3%90.0 - [tcCreditCardViewController blinkT]
我已将此设置为由NSTimer触发,并且在添加新子视图后未使计时器无效。一旦我这样做,应用程序就像以前一样顺利运行。