diff -r aedf289192f5 -r 016b3172b645 cocoaTouch/OverlayViewController.m --- a/cocoaTouch/OverlayViewController.m Tue Jun 01 19:33:45 2010 +0000 +++ b/cocoaTouch/OverlayViewController.m Wed Jun 02 13:52:23 2010 +0000 @@ -32,6 +32,8 @@ // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. + if (popupMenu.view.superview == nil) + popupMenu = nil; } -(void) didRotate:(NSNotification *)notification { @@ -148,6 +150,7 @@ self.popoverController = nil; self.popupMenu = nil; [super viewDidUnload]; + MSG_DIDUNLOAD(); } -(void) dealloc { @@ -236,8 +239,9 @@ CGRect anchorForPopover; Class popoverControllerClass = NSClassFromString(@"UIPopoverController"); if (popoverControllerClass) { -#ifdef __IPHONE_3_2 - popupMenu = [[PopoverMenuViewController alloc] initWithStyle:UITableViewStylePlain]; +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_3_2 + if (popupMenu == nil) + popupMenu = [[PopoverMenuViewController alloc] initWithStyle:UITableViewStylePlain]; popoverController = [[popoverControllerClass alloc] initWithContentViewController:popupMenu]; [popoverController setPopoverContentSize:CGSizeMake(220, 170) animated:YES]; [popoverController setPassthroughViews:[NSArray arrayWithObject:self.view]]; @@ -253,7 +257,8 @@ animated:YES]; #endif } else { - popupMenu = [[PopoverMenuViewController alloc] initWithStyle:UITableViewStyleGrouped]; + if (popupMenu == nil) + popupMenu = [[PopoverMenuViewController alloc] initWithStyle:UITableViewStyleGrouped]; popupMenu.view.backgroundColor = [UIColor clearColor]; popupMenu.view.frame = CGRectMake(480, 0, 200, 170); [self.view addSubview:popupMenu.view]; @@ -272,7 +277,7 @@ isPopoverVisible = NO; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { -#ifdef __IPHONE_3_2 +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_3_2 [popoverController dismissPopoverAnimated:YES]; #endif } else {