问题描述
亲爱的,我有一个基于导航的应用,有大约 60 次浏览.
Dear all, I have a navigation-based app with about 60 views.
我已经运行了以下内容:1.构建和分析:构建成功,没有抱怨.2.仪器分配和泄漏:没有泄漏.
I have run with the following :1. Build and analyse : bulid is successful with no complains.2. Instruments allocation and leaks : no leaks.
但是,该应用在 iPhone 或 iPad 中崩溃,但在模拟器中运行良好.崩溃发生在第 50 个视图左右.没有崩溃报告,但我确实在 crashreporter 文件夹中看到了 LowMemory.log.
However, the app crashed in iPhone or iPad but works fine in simulator.The crash occurs at around 50th view.There is no crash reports but I do see LowMemory.log in the crashreporter folder.
我已将我的 iphone 和 ipad 升级到 4.2
I have upgraded my iphone and ipad to 4.2
有没有人知道可能出了什么问题?我已经阅读并排除故障一周了.
Does anyone have ideas what could be wrong?I have been reading and troubleshooting for a week.
感谢大家的回复.
我的应用有一个名为 contentViewController 的根视图,用户可以从这里导航到 4 个测验.
My app has a root view called contentViewController and users can navigate to 4 quizzes from here.
这是我用来返回根视图的代码.
This is the code I use to return to my root view.
- (void)goHome {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: @"Warning"
message: @"Proceed?"
delegate: self
cancelButtonTitle:@"Yes"
otherButtonTitles:@"No",nil];
[alert show];
[alert release];
}
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
[[self navigationController] setNavigationBarHidden:NO animated:YES];
if (buttonIndex == 0) {
NSArray * subviews = [self.view subviews];
[subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
self.view = nil;
if (self.contentViewController == nil)
{
ContentViewController *aViewController = [[ContentViewController alloc]
initWithNibName:@"ContentViewController" bundle:[NSBundle mainBundle]];
self.contentViewController = aViewController;
[aViewController release];
}
[self.navigationController pushViewController:self.contentViewController animated:YES];
}
}
推送视图的示例代码:
-(IBAction) buttonArrowClicked:(id)sender {
NSURL *tapSound = [[NSBundle mainBundle] URLForResource: @"click"
withExtension: @"aif"];
// Store the URL as a CFURLRef instance
self.soundFileURLRef = (CFURLRef) [tapSound retain];
// Create a system sound object representing the sound file.
AudioServicesCreateSystemSoundID (
soundFileURLRef,
&soundFileObject
);
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![[defaults stringForKey:@"sound"] isEqualToString:@"NO"]) {
AudioServicesPlaySystemSound (soundFileObject);
}
if (self.exercise2ViewController == nil)
{
Exercise2ViewController *aViewController = [[Exercise2ViewController alloc]
initWithNibName:@"Exercise2ViewController" bundle:[NSBundle mainBundle]];
self.exercise2ViewController = aViewController;
[aViewController release];
}
[self.navigationController pushViewController:self.exercise2ViewController animated:YES];
}
推荐答案
在模拟器下运行一般不会遇到内存问题,所以这个平台不会自动遇到这些错误.
You will normally not run into memory problems when running under the simulator, so these errors are not automatically encountered on this platform.
但是,模拟器确实有一个功能,您可以手动触发内存不足事件.如果这确实是导致设备崩溃的原因,那么您也有可能通过这种方式在模拟器中触发相同的错误.
The simulator does however have a feature where you can manually trigger a Low Memory event. If this is actually the cause of the crash on the device, then it might also be possible that you can trigger the same bug in the simulator in this way.
这篇关于iPhone 应用程序由于内存不足而崩溃,但在模拟器中运行良好的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!