objective-c - 这怎么不是内存泄漏
<p><p>我试图弄清楚以下方法如何<strong>不</strong>导致内存泄漏。 <code>UIPopoverController</code> 已分配,但是,如果我包含 <code>autorelease</code> 或 <code>release</code> 调用,应用程序将崩溃,并显示消息 <code>'-[ UIPopoverController dealloc] 在 popover 仍然可见时到达。'</code>.</p>
<pre><code>-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
;
if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ) {
UIViewController *con = [ init];
UIPopoverController *poc = [ initWithContentViewController:con];
;
poc.popoverContentSize = CGSizeMake( 320, 320 );
;
}
else {
; // TODO (miked): display stuff another way
}
}
</code></pre>
<p>这似乎违背了基本的内存管理实践。</p>
<p>附言我没有启用 ARC。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>这仍然是内存泄漏!</p>
<p>您必须在您的类中保留对弹出框 Controller 的引用和/或实现委托(delegate)方法 popoverControllerDidDismissPopover:(您可以在那里释放它)。
<br/>当你调用它的“present...”方法时,popoverController 不会保留它自己,如果它被释放并且仍然可见,则会引发异常</p></p>
<p style="font-size: 20px;">关于objective-c - 这怎么不是内存泄漏,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/10760402/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/10760402/
</a>
</p>
页:
[1]