东西正在发生什么事。请尝试以下代码来检查应用程序使用的内存的操作系统版本
-(void) report_memory { 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)); } }
你需要#import“mach / mach.h”
这将告诉您操作系统为您的应用授予了多少内存。因此,如果您看到的是一些奇怪的乐器行为,这应该会有所启发。
老问题,但补充了fsaint的答案,以防有人仍想知道如何使用它:
它可以放在您想要记录内存使用的任何位置,例如在特定的视图控制器中。要记录整个应用程序,您可以使用AppDelegate.m。在文件的顶部:
#import <mach/mach.h>
将方法粘贴到类中的任何位置:
- (void) report_memory { 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 ) { long mb = info.resident_size / 1000000; NSLog(@"Memory in use (in Mbytes): %lu", (long)mb); } else { NSLog(@"Error with task_info(): %s", mach_error_string(kerr)); } }
包含一个从didFinishLaunchingWithOptions调用此方法的计时器:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { (...) [NSTimer scheduledTimerWithTimeInterval: 2.0 target: self selector: @selector(report_memory) userInfo: nil repeats: YES]; }
运行应用程序并查看日志以了解内存使用情况。
我只是在viewDidDisappear方法中添加self.view = nil,它可以工作,我可以恢复,现在好多了。 tnx Felz的帮助