UIPopoverController *historyPop = [[UIPopoverController alloc] initWithContentViewController:nav];
[nav release];
[historyPop setPopoverContentSize:CGSizeMake(400, 500)];
[historyPop presentPopoverFromRect:CGRectMake(button.frame.origin.x, button.frame.origin.y, button.frame.size.width, 5) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
//[historyPop release];
Dies ist mein aktueller Code, aber der Analysator sagt, dass das wahrscheinlich ein Leck ist, das es gibt (da die Freigabeleitung auskommentiert ist). Aber wenn ich die Freigabelinie auslasse, stürzt die App ab und sagt, dass dealloc auf dem Popover erreicht wurde, während es noch sichtbar ist, also wann genau sollte ich den Popover-Controller freigeben?UIPopoverController und Speichermanagement
Die Einstellung des Darstellungsansicht-Controllers als Delegat des UIPopoverControllers behält den Popover-Controller nicht bei. Der Zweck der Verwendung des Delegaten besteht darin, dass Sie den Popover-Controller ordnungsgemäß freigeben können, wenn Sie den Aufruf "popoverControllerDidDismissPopover:" erhalten. Das macht beides am sinnvollsten. –
Es ist verdammt lästig, dass sie beim Präsentieren nicht beibehalten werden und andere ähnliche Methoden (z. B. das Präsentieren von Modalansichten und das Hinzufügen von Unteransichten) völlig ignorieren –
Hinweis: Wenn Sie die nicht delegierte Route verwenden, erhalten Sie einen "UIPopoverController dealloc] erreicht, während das Popover noch sichtbar ist "wenn der Benutzer den Pop-Over-Vorgang abbricht und sofort einen weiteren Pop-Over lädt - der erste braucht Zeit, um" nicht sichtbar "zu bekommen und wird dann beendet, bevor er beendet wird, einen Absturz verursachen. – Jason