Cocoa touch iPad应用程序崩溃导致重新启动内存问题?
我在iPad上有一个应用程序崩溃,导致重启。此崩溃发生在showMap:(Mappe*mappa)方法之后的某个位置: scrollView是一个出口,Mappe是一个托管对象,它应该可以很好地工作,因为我在应用程序中的任何地方都使用它,它不会引起任何问题。 我真的被卡住了,什么会导致崩溃重新启动Cocoa touch iPad应用程序崩溃导致重新启动内存问题?,cocoa-touch,memory-management,crash,ipad,reboot,Cocoa Touch,Memory Management,Crash,Ipad,Reboot,我在iPad上有一个应用程序崩溃,导致重启。此崩溃发生在showMap:(Mappe*mappa)方法之后的某个位置: scrollView是一个出口,Mappe是一个托管对象,它应该可以很好地工作,因为我在应用程序中的任何地方都使用它,它不会引起任何问题。 我真的被卡住了,什么会导致崩溃重新启动 编辑:内存分析 我使用了Instruments-Memory Monitor来查看发生了什么,它告诉我,在启动时,我的应用程序使用了17MB的内存,而分配显示:活动字节883KB,总共4MB。我有点
编辑:内存分析 我使用了Instruments-Memory Monitor来查看发生了什么,它告诉我,在启动时,我的应用程序使用了17MB的内存,而分配显示:活动字节883KB,总共4MB。我有点困惑。。。当我启动上面的代码时,我看到:2MB的活动字节(4个ViewController)总计22MB,而内存监视器显示77MB的实际内存。
我应该看到什么才能得到真实的情况报告?您有一个托管对象上下文,您将托管对象从一个线程传递到另一个线程,然后使用它。这不是问题。相反,每个线程都应该有自己的托管对象上下文,并且ObjectSID在线程之间传递。然后,接收线程从其自己的托管对象上下文检索托管对象 更多信息:
- (void)viewDidLoad {
moc = [[MapFetcher sharedInstance] managedObjectContext];
[NSThread detachNewThreadSelector:@selector(fetchMap) toTarget:self withObject:nil];
[super viewDidLoad];
}
- (void)fetchMap {
NSAutoreleasePool *threadPool = [[NSAutoreleasePool alloc] init];
Mappe *mappa;
mappa = [[[MapFetcher sharedInstance] fetchManagedObjectsForEntity:@"Mappe"
withPredicate:[NSPredicate predicateWithFormat:@"Citta == %@", map]
withDescriptor:@"Citta"] objectAtIndex:0];
[self performSelectorOnMainThread:@selector(showImage:) withObject:mappa waitUntilDone:YES];
[threadPool release];
}
- (void)showImage:(Mappe *)mappa {
imvMappa = [[UIImageView alloc] initWithFrame:CGRectMake( 0.0, 0.0, 1024.0, 704.0 )];
[imvMappa setImage:[UIImage imageWithData:[mappa Mappa]]];
[scrollView addSubview:imvMappa];
[scrollView setContentSize:CGSizeMake( 1024.0, 704.0 )];
[scrollView setMinimumZoomScale:0.5];
[scrollView setMaximumZoomScale:4.0];
[scrollView setZoomScale:1.0];
[scrollView setContentMode:(UIViewContentModeScaleAspectFit)];
[scrollView setClipsToBounds:YES];
[scrollView setDelegate:self];
[imvMappa release];
[loadingImage stopAnimating];
[waitFor setHidden:YES];
[scrollView setHidden:NO];
}