Best Answer-推荐答案 strong>
可以肯定的是,您应该尝试从设备中获取崩溃日志。测试人员必须将设备与 iTunes 同步,然后导航到 iTunes 复制任何崩溃报告的文件夹。这取决于您使用的平台。
Mac OS X: ~/Library/Logs/CrashReporter/MobileDevice/<DEVICE_NAME>
Windows XP: C:\Documents and Settings\<USERNAME>\Application Data\Apple Computer\Logs\CrashReporter\MobileDevice\<DEVICE_NAME>
Windows Vista or 7: C:\Users\<USERNAME>\AppData\Roaming\Apple Computer\Logs\CrashReporter\MobileDevice\<DEVICE_NAME>
是计算机的用户登录名。
是 iPod touch 或 iPhone 的名称,例如“我的 iPhone”。
有一些方法可以自动收集崩溃报告,我在此处发布了有关可能性的概述,作为另一个答案的一部分:Including custom data into iOS crash dumps
此外,您可以在 iOS 模拟器中进行测试时自动发出内存警告。子类 UIViewController
并在 View Controller 出现时自动触发内存警告。
下面是一些关于如何做到这一点的示例代码:
#import "BaseViewController.h"
@interface BaseViewController (Private)
- (void)simulateMemoryWarning;
@end
@implementation BaseViewController
- (void) viewDidAppearBOOL)animated {
[super viewDidAppear:animated];
#if TARGET_IPHONE_SIMULATOR
#if defined (CONFIGURATION_Debug)
// If we are running in the simulator and it's the DEBUG target
// then simulate a memory warning. Note that the DEBUG flag isn't
// defined by default. To define it add this Preprocessor Macro for
// the Debug target: DEBUG=1
[self simulateMemoryWarning];
#endif
#endif
}
- (void)simulateMemoryWarning {
#if TARGET_IPHONE_SIMULATOR
#if defined (CONFIGURATION_Debug)
SEL memoryWarningSel = @selector(_performMemoryWarning);
if ([[UIApplication sharedApplication] respondsToSelector:memoryWarningSel]) {
[[UIApplication sharedApplication] performSelector:memoryWarningSel];
} else {
NSLog(@"%@",@"Whoops UIApplication no loger responds to -_performMemoryWarning");
}
(CFStringRef)@"UISimulatedMemoryWarningNotification", NULL, NULL, true);
#endif
#endif
}
@end
现在在子类化您自己的 View Controller 而不是从 UIViewController 子类化时使用它。此代码最初发布在这里 https://gist.github.com/956403并通过从此处添加解决方案来调整以使用 Xcode 4.2.1 https://stackoverflow.com/a/2785175/474794
关于ios - 内存不足警告总是导致 iPad(第一代)崩溃,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/9292804/